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] [Updated] (QPID-6477) Make 0-10 implementation ignore all received frames except ConnectionCloseOk once ConnectionClose is sent
Date Sun, 31 May 2015 22:08:17 GMT

     [ https://issues.apache.org/jira/browse/QPID-6477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Keith Wall updated QPID-6477:
-----------------------------
    Status: Reviewable  (was: In Progress)

> 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
>            Assignee: 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