[
https://issues.apache.org/jira/browse/QPID-6477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14396360#comment-14396360
]
ASF subversion and git services commented on QPID-6477:
-------------------------------------------------------
Commit 1671415 from [~k-wall] in branch 'qpid/trunk'
[ https://svn.apache.org/r1671415 ]
QPID-6477: [Java Broker] Make 0-10 implementation ignore all received frames
except ConnectionCloseOk once ConnectionClose is sent
> 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: [email protected]
For additional commands, e-mail: [email protected]