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