You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Helen Kwong <he...@gmail.com> on 2015/07/01 00:33:30 UTC

NPEs when creating consumers / queues

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

Re: NPEs when creating consumers / queues

Posted by Helen Kwong <he...@gmail.com>.
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 <he...@gmail.com> 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 <ke...@gmail.com> wrote:
>
>> On 2 July 2015 at 21:50, Rob Godfrey <ro...@gmail.com> wrote:
>>
>> > On 2 July 2015 at 21:29, Helen Kwong <he...@gmail.com> 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 <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 <he...@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
>> > >>
>> > >>
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
>> > For additional commands, e-mail: users-help@qpid.apache.org
>> >
>> >
>>
>
>

Re: NPEs when creating consumers / queues

Posted by Helen Kwong <he...@gmail.com>.
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 <ke...@gmail.com> wrote:

> On 2 July 2015 at 21:50, Rob Godfrey <ro...@gmail.com> wrote:
>
> > On 2 July 2015 at 21:29, Helen Kwong <he...@gmail.com> 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 <ro...@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 <he...@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
> > >>
> > >>
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> > For additional commands, e-mail: users-help@qpid.apache.org
> >
> >
>

Re: NPEs when creating consumers / queues

Posted by Keith W <ke...@gmail.com>.
On 2 July 2015 at 21:50, Rob Godfrey <ro...@gmail.com> wrote:

> On 2 July 2015 at 21:29, Helen Kwong <he...@gmail.com> 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 <ro...@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 <he...@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
> >>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>

Re: NPEs when creating consumers / queues

Posted by Rob Godfrey <ro...@gmail.com>.
On 2 July 2015 at 21:29, Helen Kwong <he...@gmail.com> 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 <ro...@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 <he...@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
>>
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: NPEs when creating consumers / queues

Posted by Helen Kwong <he...@gmail.com>.
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 <ro...@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 <he...@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
>
>

Re: NPEs when creating consumers / queues

Posted by Rob Godfrey <ro...@gmail.com>.
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 <he...@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