[ 
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]

Reply via email to