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