Hi Keith, just want to let you know that the 0.32 patch did indeed solve the issue we encountered in our tests before. Thanks very much for your help!
On Fri, Jul 10, 2015 at 10:48 AM, Helen Kwong <[email protected]> wrote: > Hi Keith, > > Thanks a lot for the patch! We will try the 0.32 patch with our tests and > let you know how it goes. > > Helen > > On Fri, Jul 10, 2015 at 6:43 AM, Keith W <[email protected]> wrote: > >> On 2 July 2015 at 21:50, Rob Godfrey <[email protected]> wrote: >> >> > On 2 July 2015 at 21:29, Helen Kwong <[email protected]> wrote: >> > > Hi Rob, >> > > >> > > Thanks for looking into this. Is there any time estimate on when the >> fix >> > > will be available? We're trying to see if we should put together some >> > > workaround in how we create the consumers to avoid the issue. >> > > >> > >> > We should have a fix available soon - we'll probably make a patch file >> > available for 0.32... the fix for trunk will be a bit different. >> > >> >> There is a patch attached to JIRA QPID-6619 (QPID-6619_0.32.patch) that >> will apply to the 0.32 branch that will resolve the race. >> >> After you have run a command like: >> cd 0.32/qpid/java ; patch -p0 < ~/Downloads/QPID-6619_0.32.patch; mvn >> package -DskipTests >> there will be a new distributable at the following location. >> broker/target/qpid-broker-0.32-bin.tar.gz >> >> The tests will pass with the exception of the SSL tests. The self signed >> cert expired used by the tests on the branch, a few months ago, causing >> this. >> >> The defect is also resolved on trunk. Any feedback appreciated. >> >> svn location: https://svn.apache.org/repos/asf/qpid/branches/0.32/ >> build instructions: >> https://cwiki.apache.org/confluence/display/qpid/Qpid+Java+Build+How+To >> patch: >> >> https://issues.apache.org/jira/secure/attachment/12744711/QPID-6619_0.32.patch >> >> >> > > Also, is there any way for the metadata of durable queues created by a >> > 0.16 >> > > broker to be used by a 0.32 broker? We're also thinking if there is a >> way >> > > to do this, then when we upgrade our broker this bug won't be an >> issue. >> > > Though from a quick test I did it seems the new broker would not use >> the >> > > old broker's queue metadata automatically, even if they use the same >> work >> > > directory. >> > > >> > >> > It may be possible to extract the config from your old broker so that >> > it can be used by 0.32 - I'll need to look into how things worked in >> > 0.16 and the steps needed to get that all the way to 0.32. >> > >> > Hope this helps, >> > >> > Rob >> > >> > > Thanks, >> > > Helen >> > > >> > > On Tue, Jun 30, 2015 at 4:08 PM, Rob Godfrey <[email protected] >> > >> > > wrote: >> > > >> > >> Hi Helen, >> > >> >> > >> yes - they both look like aspects of the same race condition whereby >> > >> AMQP operations are seeing queue objects before they have been >> > >> completely initialised (in particular before the onOpen() method of >> > >> the queue has completed). >> > >> >> > >> I'm about to go to sleep here, and am in meetings most of tmr, so I >> > >> may not get a chance to dig deeper until later this week - however >> > >> we'll look to provide some sort of patch to fix this ASAP though. >> > >> >> > >> Apologies, >> > >> Rob >> > >> >> > >> On 1 July 2015 at 00:33, Helen Kwong <[email protected]> wrote: >> > >> > Hi Qpid experts, >> > >> > >> > >> > I am testing using Java broker 0.32 with client 0.16, and have run >> > into >> > >> > NPEs when I create consumers to queues in an initialization step to >> > force >> > >> > the queues to be created. I'm not able to reproduce this reliably, >> and >> > >> it's >> > >> > possible that this is triggered by some race condition, since we >> can >> > have >> > >> > multiple threads trying to register consumers to these new queues >> at >> > the >> > >> > same time. Any idea what is causing this? (We used to use the 0.16 >> > broker >> > >> > with the same initialization and didn't run into this.) >> > >> > >> > >> > Stacktrace I've seen: >> > >> > >> > >> > qpidbrkr`20150630085024.987`Exception processing command >> > >> > java.lang.NullPointerException >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.queue.AbstractQueue.addConsumer(AbstractQueue.java:802) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.queue.AbstractQueue.addConsumer(AbstractQueue.java:100) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.messageSubscribe(ServerSessionDelegate.java:327) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.messageSubscribe(ServerSessionDelegate.java:82) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.MessageSubscribe.dispatch(MessageSubscribe.java:110) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.SessionDelegate.command(SessionDelegate.java:55) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:99) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:82) >> > >> > at >> org.apache.qpid.transport.Method.delegate(Method.java:159) >> > >> > at >> > org.apache.qpid.transport.Session.received(Session.java:596) >> > >> > at >> > >> > org.apache.qpid.transport.Connection.dispatch(Connection.java:452) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:64) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:40) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.MethodDelegate.messageSubscribe(MethodDelegate.java:131) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.MessageSubscribe.dispatch(MessageSubscribe.java:110) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:54) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:40) >> > >> > at >> org.apache.qpid.transport.Method.delegate(Method.java:159) >> > >> > at >> > >> > org.apache.qpid.transport.Connection.received(Connection.java:405) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection.access$001(ServerConnection.java:64) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:316) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:312) >> > >> > at java.security.AccessController.doPrivileged(Native >> Method) >> > >> > at javax.security.auth.Subject.doAs(Subject.java:356) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:311) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:64) >> > >> > at >> > >> > org.apache.qpid.transport.network.Assembler.emit(Assembler.java:97) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.Assembler.assemble(Assembler.java:198) >> > >> > at >> > >> > >> org.apache.qpid.transport.network.Assembler.frame(Assembler.java:131) >> > >> > at >> > >> org.apache.qpid.transport.network.Frame.delegate(Frame.java:128) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.Assembler.received(Assembler.java:102) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.Assembler.received(Assembler.java:44) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.network.InputHandler.next(InputHandler.java:199) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:114) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:179) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:43) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:153) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:51) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161) >> > >> > at java.lang.Thread.run(Thread.java:745) >> > >> > >> > >> > >> > >> > Another that I've seen that seems related: >> > >> > >> > >> > qpidbrkr`20150630085024.954`Exception processing command >> > >> > java.lang.NullPointerException >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.queue.AbstractQueue.getAvailableAttributes(AbstractQueue.java:635) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.queueQuery(ServerSessionDelegate.java:1533) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.queueQuery(ServerSessionDelegate.java:82) >> > >> > at >> > >> org.apache.qpid.transport.QueueQuery.dispatch(QueueQuery.java:87) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.SessionDelegate.command(SessionDelegate.java:55) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:99) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:82) >> > >> > at >> org.apache.qpid.transport.Method.delegate(Method.java:159) >> > >> > at >> > org.apache.qpid.transport.Session.received(Session.java:596) >> > >> > at >> > >> > org.apache.qpid.transport.Connection.dispatch(Connection.java:452) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:64) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:40) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.MethodDelegate.queueQuery(MethodDelegate.java:215) >> > >> > at >> > >> org.apache.qpid.transport.QueueQuery.dispatch(QueueQuery.java:87) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:54) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:40) >> > >> > at >> org.apache.qpid.transport.Method.delegate(Method.java:159) >> > >> > at >> > >> > org.apache.qpid.transport.Connection.received(Connection.java:405) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection.access$001(ServerConnection.java:64) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:316) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:312) >> > >> > at java.security.AccessController.doPrivileged(Native >> Method) >> > >> > at javax.security.auth.Subject.doAs(Subject.java:356) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:311) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:64) >> > >> > at >> > >> > org.apache.qpid.transport.network.Assembler.emit(Assembler.java:97) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.Assembler.assemble(Assembler.java:198) >> > >> > at >> > >> > >> org.apache.qpid.transport.network.Assembler.frame(Assembler.java:131) >> > >> > at >> > >> org.apache.qpid.transport.network.Frame.delegate(Frame.java:128) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.Assembler.received(Assembler.java:102) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.Assembler.received(Assembler.java:44) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.network.InputHandler.next(InputHandler.java:199) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:114) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:179) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:43) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:153) >> > >> > at >> > >> > >> > >> >> > >> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:51) >> > >> > at >> > >> > >> > org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161) >> > >> > at java.lang.Thread.run(Thread.java:745) >> > >> > >> > >> > >> > >> > Thanks! >> > >> > >> > >> > Helen >> > >> >> > >> --------------------------------------------------------------------- >> > >> To unsubscribe, e-mail: [email protected] >> > >> For additional commands, e-mail: [email protected] >> > >> >> > >> >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: [email protected] >> > For additional commands, e-mail: [email protected] >> > >> > >> > >
