On 2 July 2015 at 21:50, Rob Godfrey <[email protected]> wrote:

> On 2 July 2015 at 21:29, Helen Kwong <[email protected]> wrote:
> > Hi Rob,
> >
> > Thanks for looking into this. Is there any time estimate on when the fix
> > will be available? We're trying to see if we should put together some
> > workaround in how we create the consumers to avoid the issue.
> >
>
> We should have a fix available soon - we'll probably make a patch file
> available for 0.32... the fix for trunk will be a bit different.
>

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 <[email protected]>
> > wrote:
> >
> >> Hi Helen,
> >>
> >> yes - they both look like aspects of the same race condition whereby
> >> AMQP operations are seeing queue objects before they have been
> >> completely initialised (in particular before the onOpen() method of
> >> the queue has completed).
> >>
> >> I'm about to go to sleep here, and am in meetings most of tmr, so I
> >> may not get a chance to dig deeper until later this week - however
> >> we'll look to provide some sort of patch to fix this ASAP though.
> >>
> >> Apologies,
> >> Rob
> >>
> >> On 1 July 2015 at 00:33, Helen Kwong <[email protected]> wrote:
> >> > Hi Qpid experts,
> >> >
> >> > I am testing using Java broker 0.32 with client 0.16, and have run
> into
> >> > NPEs when I create consumers to queues in an initialization step to
> force
> >> > the queues to be created. I'm not able to reproduce this reliably, and
> >> it's
> >> > possible that this is triggered by some race condition, since we can
> have
> >> > multiple threads trying to register consumers to these new queues at
> the
> >> > same time. Any idea what is causing this? (We used to use the 0.16
> broker
> >> > with the same initialization and didn't run into this.)
> >> >
> >> > Stacktrace I've seen:
> >> >
> >> > qpidbrkr`20150630085024.987`Exception processing command
> >> > java.lang.NullPointerException
> >> >         at
> >> >
> >>
> org.apache.qpid.server.queue.AbstractQueue.addConsumer(AbstractQueue.java:802)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.queue.AbstractQueue.addConsumer(AbstractQueue.java:100)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.messageSubscribe(ServerSessionDelegate.java:327)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.messageSubscribe(ServerSessionDelegate.java:82)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.MessageSubscribe.dispatch(MessageSubscribe.java:110)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.SessionDelegate.command(SessionDelegate.java:55)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:99)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:82)
> >> >         at org.apache.qpid.transport.Method.delegate(Method.java:159)
> >> >         at
> org.apache.qpid.transport.Session.received(Session.java:596)
> >> >         at
> >> > org.apache.qpid.transport.Connection.dispatch(Connection.java:452)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:64)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:40)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.MethodDelegate.messageSubscribe(MethodDelegate.java:131)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.MessageSubscribe.dispatch(MessageSubscribe.java:110)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:54)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:40)
> >> >         at org.apache.qpid.transport.Method.delegate(Method.java:159)
> >> >         at
> >> > org.apache.qpid.transport.Connection.received(Connection.java:405)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection.access$001(ServerConnection.java:64)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:316)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:312)
> >> >         at java.security.AccessController.doPrivileged(Native Method)
> >> >         at javax.security.auth.Subject.doAs(Subject.java:356)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:311)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:64)
> >> >         at
> >> > org.apache.qpid.transport.network.Assembler.emit(Assembler.java:97)
> >> >         at
> >> >
> org.apache.qpid.transport.network.Assembler.assemble(Assembler.java:198)
> >> >         at
> >> > org.apache.qpid.transport.network.Assembler.frame(Assembler.java:131)
> >> >         at
> >> org.apache.qpid.transport.network.Frame.delegate(Frame.java:128)
> >> >         at
> >> >
> org.apache.qpid.transport.network.Assembler.received(Assembler.java:102)
> >> >         at
> >> >
> org.apache.qpid.transport.network.Assembler.received(Assembler.java:44)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.network.InputHandler.next(InputHandler.java:199)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:114)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:179)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:43)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:153)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:51)
> >> >         at
> >> >
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
> >> >         at java.lang.Thread.run(Thread.java:745)
> >> >
> >> >
> >> > Another that I've seen that seems related:
> >> >
> >> > qpidbrkr`20150630085024.954`Exception processing command
> >> > java.lang.NullPointerException
> >> >         at
> >> >
> >>
> org.apache.qpid.server.queue.AbstractQueue.getAvailableAttributes(AbstractQueue.java:635)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.queueQuery(ServerSessionDelegate.java:1533)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.queueQuery(ServerSessionDelegate.java:82)
> >> >         at
> >> org.apache.qpid.transport.QueueQuery.dispatch(QueueQuery.java:87)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.SessionDelegate.command(SessionDelegate.java:55)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:99)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerSessionDelegate.command(ServerSessionDelegate.java:82)
> >> >         at org.apache.qpid.transport.Method.delegate(Method.java:159)
> >> >         at
> org.apache.qpid.transport.Session.received(Session.java:596)
> >> >         at
> >> > org.apache.qpid.transport.Connection.dispatch(Connection.java:452)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:64)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.handle(ConnectionDelegate.java:40)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.MethodDelegate.queueQuery(MethodDelegate.java:215)
> >> >         at
> >> org.apache.qpid.transport.QueueQuery.dispatch(QueueQuery.java:87)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:54)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.ConnectionDelegate.command(ConnectionDelegate.java:40)
> >> >         at org.apache.qpid.transport.Method.delegate(Method.java:159)
> >> >         at
> >> > org.apache.qpid.transport.Connection.received(Connection.java:405)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection.access$001(ServerConnection.java:64)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:316)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection$1.run(ServerConnection.java:312)
> >> >         at java.security.AccessController.doPrivileged(Native Method)
> >> >         at javax.security.auth.Subject.doAs(Subject.java:356)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:311)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ServerConnection.received(ServerConnection.java:64)
> >> >         at
> >> > org.apache.qpid.transport.network.Assembler.emit(Assembler.java:97)
> >> >         at
> >> >
> org.apache.qpid.transport.network.Assembler.assemble(Assembler.java:198)
> >> >         at
> >> > org.apache.qpid.transport.network.Assembler.frame(Assembler.java:131)
> >> >         at
> >> org.apache.qpid.transport.network.Frame.delegate(Frame.java:128)
> >> >         at
> >> >
> org.apache.qpid.transport.network.Assembler.received(Assembler.java:102)
> >> >         at
> >> >
> org.apache.qpid.transport.network.Assembler.received(Assembler.java:44)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.network.InputHandler.next(InputHandler.java:199)
> >> >         at
> >> >
> >>
> org.apache.qpid.transport.network.InputHandler.received(InputHandler.java:114)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:179)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.v0_10.ProtocolEngine_0_10.received(ProtocolEngine_0_10.java:43)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:153)
> >> >         at
> >> >
> >>
> org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:51)
> >> >         at
> >> >
> org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:161)
> >> >         at java.lang.Thread.run(Thread.java:745)
> >> >
> >> >
> >> > Thanks!
> >> >
> >> > Helen
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to