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 <[email protected]> wrote:

> 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