qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Helen Kwong <helenkw...@gmail.com>
Subject Re: NPEs when creating consumers / queues
Date Thu, 02 Jul 2015 19:29:52 GMT
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 <rob.j.godfrey@gmail.com>
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 <helenkwong@gmail.com> 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: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message