AMQ-8287 - fix NIOSSLTransport deadlock with serviceRead lock

This narrows the lock that was added to serviceRead() to secureRead()
which prevents processing commands while locked which should solve the
deadlock issues
This commit is contained in:
Christopher L. Shannon (cshannon) 2021-06-02 09:47:24 -04:00
parent ba455e8c5f
commit 2fcf2fd75f
2 changed files with 4 additions and 5 deletions

View File

@ -158,9 +158,8 @@ public class AutoInitNioSSLTransport extends NIOSSLTransport {
return readSize;
}
//Prevent concurrent access to SSLEngine
@Override
public synchronized void serviceRead() {
public void serviceRead() {
try {
if (handshakeInProgress) {
doHandshake();

View File

@ -243,9 +243,8 @@ public class NIOSSLTransport extends NIOTransport {
}
}
//Prevent concurrent access to SSLEngine
@Override
public synchronized void serviceRead() {
public void serviceRead() {
try {
if (handshakeInProgress) {
doHandshake();
@ -374,7 +373,8 @@ public class NIOSSLTransport extends NIOTransport {
}
}
protected int secureRead(ByteBuffer plain) throws Exception {
//Prevent concurrent access while reading from the channel
protected synchronized int secureRead(ByteBuffer plain) throws Exception {
if (!(inputBuffer.position() != 0 && inputBuffer.hasRemaining()) || status == SSLEngineResult.Status.BUFFER_UNDERFLOW) {
int bytesRead = channel.read(inputBuffer);