summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2012-02-05 12:27:59 +0000
committerKeith Wall <kwall@apache.org>2012-02-05 12:27:59 +0000
commitc5e733f68468cd13fa301f22691cc655d7beb00f (patch)
treef87d2e976c1118bfaac93e2aa8ad627dbbddfb4e
parent46507f19d7d4fa097d0282b61f2071f557beebd5 (diff)
downloadqpid-python-c5e733f68468cd13fa301f22691cc655d7beb00f.tar.gz
QPID-3812: ExceptionListenerTest sporadically fails on java-mms-0.10
Remove possibility of race condition by updating Broker state *before* sending the connection reply. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1240708 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java14
1 files changed, 9 insertions, 5 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
index 17231cb61d..eb845d7cfb 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
@@ -32,6 +32,8 @@ import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationS
import org.apache.qpid.server.subscription.Subscription_0_10;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.transport.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.security.sasl.SaslException;
import javax.security.sasl.SaslServer;
@@ -46,6 +48,8 @@ import java.util.StringTokenizer;
public class ServerConnectionDelegate extends ServerDelegate
{
+ private static final Logger LOGGER = LoggerFactory.getLogger(ServerConnectionDelegate.class);
+
private final String _localFQDN;
private final IApplicationRegistry _appRegistry;
private int _maxNoOfChannels;
@@ -164,19 +168,19 @@ public class ServerConnectionDelegate extends ServerDelegate
if (!vhost.getSecurityManager().accessVirtualhost(vhostName, ((ProtocolEngine) sconn.getConfig()).getRemoteAddress()))
{
- sconn.invoke(new ConnectionClose(ConnectionCloseCode.CONNECTION_FORCED, "Permission denied '"+vhostName+"'"));
sconn.setState(Connection.State.CLOSING);
+ sconn.invoke(new ConnectionClose(ConnectionCloseCode.CONNECTION_FORCED, "Permission denied '"+vhostName+"'"));
}
else
{
- sconn.invoke(new ConnectionOpenOk(Collections.emptyList()));
- sconn.setState(Connection.State.OPEN);
+ sconn.setState(Connection.State.OPEN);
+ sconn.invoke(new ConnectionOpenOk(Collections.emptyList()));
}
}
else
{
- sconn.invoke(new ConnectionClose(ConnectionCloseCode.INVALID_PATH, "Unknown virtualhost '"+vhostName+"'"));
sconn.setState(Connection.State.CLOSING);
+ sconn.invoke(new ConnectionClose(ConnectionCloseCode.INVALID_PATH, "Unknown virtualhost '"+vhostName+"'"));
}
}
@@ -189,7 +193,7 @@ public class ServerConnectionDelegate extends ServerDelegate
if (okChannelMax > getChannelMax())
{
- _logger.error("Connection '" + sconn.getConnectionId() + "' being severed, " +
+ LOGGER.error("Connection '" + sconn.getConnectionId() + "' being severed, " +
"client connectionTuneOk returned a channelMax (" + okChannelMax +
") above the servers offered limit (" + getChannelMax() +")");