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