You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2015/04/05 20:46:33 UTC

[jira] [Commented] (QPID-6477) Make 0-10 implementation ignore all received frames except ConnectionCloseOk once ConnectionClose is sent

    [ 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: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org