qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Keith Wall (JIRA)" <j...@apache.org>
Subject [jira] [Created] (QPID-6477) Make 0-10 implementation ignore all received frames except ConnectionCloseOk once ConnectionClose is sent
Date Sun, 05 Apr 2015 18:39:33 GMT
Keith Wall created QPID-6477:
--------------------------------

             Summary: Make 0-10 implementation ignore all received frames except ConnectionCloseOk
once ConnectionClose is sent
                 Key: QPID-6477
                 URL: https://issues.apache.org/jira/browse/QPID-6477
             Project: Qpid
          Issue Type: Improvement
          Components: Java Broker
            Reporter: Keith Wall
             Fix For: 6.0 [Java]


Since the IO refactoring BrokerClosesClientConnection tests is sporadically failing with the
exception below.

In the test testClientCloseOnNormalBrokerShutdown , the Broker fails to shutdown because the
Port has failed to close.  This happens because AmpqPort's SettableFuture#_noConnectionRemain
never gets set, and this is because the number of connections on the Port never reaches zero.
 This happens because the IO thread, which is processing remaining bytes from the client fails
processing a SessionAttach.  The exception means we never reregister interest in the socket
channel, so we never learn that the socket is closed and never close the receiver, thus the
number of connections on the Port never hits zero.

The solution is to change the Java Broker's 0-10 implementation to discard all frames except
ConnectionCloseOk once ConnectionClose is sent.

{noformat}
Thread terminated due to uncaught exceptionjava.lang.IllegalStateException: Task executor
is not in ACTIVE state
	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.checkState(TaskExecutorImpl.java:308)
	at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.submit(TaskExecutorImpl.java:136)
	at org.apache.qpid.server.model.AbstractConfiguredObject.doOnConfigThread(AbstractConfiguredObject.java:497)
	at org.apache.qpid.server.model.AbstractConfiguredObject.createAsync(AbstractConfiguredObject.java:698)
	at org.apache.qpid.server.model.AbstractConfiguredObject.create(AbstractConfiguredObject.java:693)
	at org.apache.qpid.server.model.adapter.ConnectionAdapter.sessionAdded(ConnectionAdapter.java:273)
	at org.apache.qpid.server.protocol.v0_10.ServerConnection.sessionAdded(ServerConnection.java:624)
	at org.apache.qpid.server.protocol.v0_10.ServerConnection.registerSession(ServerConnection.java:445)
	at org.apache.qpid.transport.ServerDelegate.sessionAttach(ServerDelegate.java:203)
	at org.apache.qpid.server.protocol.v0_10.ServerConnectionDelegate.sessionAttach(ServerConnectionDelegate.java:353)
	at org.apache.qpid.server.protocol.v0_10.ServerConnectionDelegate.sessionAttach(ServerConnectionDelegate.java:56)
	at org.apache.qpid.transport.SessionAttach.dispatch(SessionAttach.java:88)
	at org.apache.qpid.transport.ConnectionDelegate.control(ConnectionDelegate.java:49)
	at org.apache.qpid.transport.ConnectionDelegate.control(ConnectionDelegate.java:40)
	at org.apache.qpid.transport.Method.delegate(Method.java:163)
	at org.apache.qpid.transport.Connection.received(Connection.java:416)
	at org.apache.qpid.server.protocol.v0_10.ServerConnection.access$001(ServerConnection.java:68)
	at org.apache.qpid.server.protocol.v0_10.ServerConnection$2.run(ServerConnection.java:338)
	at org.apache.qpid.server.protocol.v0_10.ServerConnection$2.run(ServerConnection.java:334)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:360)
	at org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:333)
	at org.apache.qpid.transport.network.Assembler.emit(Assembler.java:98)
	at org.apache.qpid.transport.network.Assembler.assemble(Assembler.java:184)
	at org.apache.qpid.transport.network.Assembler.frame(Assembler.java:132)
	at org.apache.qpid.transport.network.Frame.delegate(Frame.java:128)
	at org.apache.qpid.transport.network.Assembler.received(Assembler.java:103)
	at org.apache.qpid.server.protocol.v0_10.ServerAssembler.received(ServerAssembler.java:48)
	at org.apache.qpid.transport.network.InputHandler.next(InputHandler.java:200)
	at org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:115)
	at org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:218)
	at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:159)
	at org.apache.qpid.server.transport.NonBlockingConnection.doRead(NonBlockingConnection.java:375)
	at org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:276)
	at org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:94)
	at org.apache.qpid.server.transport.NetworkConnectionScheduler.access$000(NetworkConnectionScheduler.java:34)
	at org.apache.qpid.server.transport.NetworkConnectionScheduler$2.run(NetworkConnectionScheduler.java:75)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message