[ https://issues.apache.org/jira/browse/QPID-7399?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16222358#comment-16222358 ]
Lorenz Quack commented on QPID-7399: ------------------------------------ My analysis (current revision is 626666a) is as follows: # The selector thread detects acceptable keys and puts the Runnable on line 196 onto the {{_workQueue}}. # In the meantime something closes the AmqpPort which calls {{AmqpPortImpl#onClose}} -> {{TCPandSSLTransport#close}} -> {{NetworkConnectionScheduler#close}} -> {{SelectorThread#close}} which sets {{_closed}} to {{true}}. # The selector thread now reaches the end of the while loop in {{SelectionTask#performSelect}} and calls {{SelectionTask#closeSelector}} which closes the {{_selector}}. # Now a different IO-Thread picks up the Runnable from step 1. from the {{_workQueue}} and starts executing it. Notice that the Runnable is a closure around the former selector thread's {{SelectorTask}} (the one who's {{_selector}} was closed in step 3.). # When trying to use the {{_selector}} in line 210 we get the above {{ClosedSelectorException}} For now I will simply catch the exception which seems to occur rarely. Since {{Selector#close}} is synchronized on the selector itself (see Concurrency section of [the docs|https://docs.oracle.com/javase/8/docs/api/java/nio/channels/Selector.html]) we could alternatively synchronize a block around the call to {{channel.register}} in line 210. > [Java Broker] ClosedSelectorException during shutdown > ----------------------------------------------------- > > Key: QPID-7399 > URL: https://issues.apache.org/jira/browse/QPID-7399 > Project: Qpid > Issue Type: Bug > Components: Java Broker > Reporter: Lorenz Quack > Priority: Minor > Fix For: qpid-java-broker-7.0.0 > > Attachments: > TEST-org.apache.qpid.transport.MaxFrameSizeTest.testTooLargeFrameSize.txt > > > Today the Jenkins mms.0-9-1 job on trunk failed the test > {{MaxFrameSizeTest.testTooSmallFrameSize}} but the actual problem seems to > have been during shutdown of {{MaxFrameSizeTest.testTooLargeFrameSize}}. > There the following exception occurred: > {code} > 2016-08-23 20:26:34,118 ERROR [IO-pool-Port-amqp-2] > o.a.q.t.u.InternalBrokerHolder Uncaught exception from thread > IO-pool-Port-amqp-2 > java.nio.channels.ClosedSelectorException: null > at sun.nio.ch.EPollSelectorImpl.putEventOps(EPollSelectorImpl.java:185) > ~[na:1.7.0_80] > at > sun.nio.ch.ServerSocketChannelImpl.translateAndSetInterestOps(ServerSocketChannelImpl.java:361) > ~[na:1.7.0_80] > at > sun.nio.ch.SelectionKeyImpl.nioInterestOps(SelectionKeyImpl.java:105) > ~[na:1.7.0_80] > at sun.nio.ch.SelectionKeyImpl.interestOps(SelectionKeyImpl.java:83) > ~[na:1.7.0_80] > at > java.nio.channels.spi.AbstractSelectableChannel.register(AbstractSelectableChannel.java:201) > ~[na:1.7.0_80] > at > org.apache.qpid.server.transport.SelectorThread$SelectionTask$1.run(SelectorThread.java:197) > ~[qpid-broker-core-6.1.0-SNAPSHOT.jar:6.1.0-SNAPSHOT] > at > org.apache.qpid.server.transport.SelectorThread.run(SelectorThread.java:462) > ~[qpid-broker-core-6.1.0-SNAPSHOT.jar:6.1.0-SNAPSHOT] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > ~[na:1.7.0_80] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > ~[na:1.7.0_80] > at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_80] > {code} > The full log is attached. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org