qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Godfrey <rob.j.godf...@gmail.com>
Subject Re: NPEs when creating consumers / queues
Date Thu, 02 Jul 2015 20:50:44 GMT
On 2 July 2015 at 21:29, Helen Kwong <helenkwong@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 <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
>>
>>

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


Mime
View raw message