Description
Whilst qpid-tool is connected to the Java broker, after a period of time the broker is seen to emit a NullPointerException. This was typically seen quickyl before the management update period was increased to 10 seconds, now it occurs after a longer period, suggesting the root cause is dependant on the number of messages sent. Thus far, the same code location has generated the NPE when called from slightly different contexts in the following 3 threads:
Exception in thread "TimerThread-test:" java.lang.NullPointerException
Exception in thread "pool-1-thread-X" java.lang.NullPointerException
Exception in thread "SubFlushRunner-org.apache.qpid.server.subscription.Subscription_0_10@1d4d493" java.lang.NullPointerException
Up to date stack (r918944):
Exception in thread "TimerThread-test:" java.lang.NullPointerException
at org.apache.qpid.server.txn.AutoCommitTransaction.dequeue(AutoCommitTransaction.java:55)
at org.apache.qpid.server.subscription.Subscription_0_10.forceDequeue(Subscription_0_10.java:577)
at org.apache.qpid.server.subscription.Subscription_0_10.send(Subscription_0_10.java:564)
at org.apache.qpid.server.queue.SimpleAMQQueue.deliverMessage(SimpleAMQQueue.java:696)
at org.apache.qpid.server.queue.SimpleAMQQueue.deliverToSubscription(SimpleAMQQueue.java:641)
at org.apache.qpid.server.queue.SimpleAMQQueue.enqueue(SimpleAMQQueue.java:594)
at org.apache.qpid.server.queue.SimpleAMQQueue.enqueue(SimpleAMQQueue.java:519)
at org.apache.qpid.qmf.ManagementExchange.publishToConsole(ManagementExchange.java:364)
at org.apache.qpid.qmf.ManagementExchange.publishObjectsToConsole(ManagementExchange.java:343)
at org.apache.qpid.qmf.ManagementExchange.publishAllConsole(ManagementExchange.java:316)
at org.apache.qpid.qmf.ManagementExchange$UpdateTask.run(ManagementExchange.java:497)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
Older stacks (some line numbers have changed slightly since):
Exception in thread "SubFlushRunner-org.apache.qpid.server.subscription.Subscription_0_10@1d4d493" java.lang.NullPointerException
at org.apache.qpid.server.txn.AutoCommitTransaction.dequeue(AutoCommitTransaction.java:55)
at org.apache.qpid.server.subscription.Subscription_0_10.forceDequeue(Subscription_0_10.java:576)
at org.apache.qpid.server.subscription.Subscription_0_10.send(Subscription_0_10.java:563)
at org.apache.qpid.server.queue.SimpleAMQQueue.deliverMessage(SimpleAMQQueue.java:674)
at org.apache.qpid.server.queue.SimpleAMQQueue.attemptDelivery(SimpleAMQQueue.java:1646)
at org.apache.qpid.server.queue.SimpleAMQQueue.flushSubscription(SimpleAMQQueue.java:1585)
at org.apache.qpid.server.queue.SubFlushRunner.run(SubFlushRunner.java:56)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Exception in thread "SubFlushRunner-org.apache.qpid.server.subscription.Subscription_0_10@1d4d493" java.lang.NullPointerException
at org.apache.qpid.server.txn.AutoCommitTransaction.dequeue(AutoCommitTransaction.java:55)
at org.apache.qpid.server.subscription.Subscription_0_10.forceDequeue(Subscription_0_10.java:576)
at org.apache.qpid.server.subscription.Subscription_0_10.send(Subscription_0_10.java:563)
at org.apache.qpid.server.queue.SimpleAMQQueue.deliverMessage(SimpleAMQQueue.java:674)
at org.apache.qpid.server.queue.SimpleAMQQueue.attemptDelivery(SimpleAMQQueue.java:1646)
at org.apache.qpid.server.queue.SimpleAMQQueue.flushSubscription(SimpleAMQQueue.java:1585)
at org.apache.qpid.server.queue.SubFlushRunner.run(SubFlushRunner.java:56)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Exception in thread "pool-1-thread-15" java.lang.NullPointerException
at org.apache.qpid.server.txn.AutoCommitTransaction.dequeue(AutoCommitTransaction.java:55)
at org.apache.qpid.server.subscription.Subscription_0_10.forceDequeue(Subscription_0_10.java:576)
at org.apache.qpid.server.subscription.Subscription_0_10.send(Subscription_0_10.java:563)
at org.apache.qpid.server.queue.SimpleAMQQueue.deliverMessage(SimpleAMQQueue.java:674)
at org.apache.qpid.server.queue.SimpleAMQQueue.attemptDelivery(SimpleAMQQueue.java:1646)
at org.apache.qpid.server.queue.SimpleAMQQueue.processQueue(SimpleAMQQueue.java:1765)
at org.apache.qpid.server.queue.SimpleAMQQueue.access$100(SimpleAMQQueue.java:70)
at org.apache.qpid.server.queue.SimpleAMQQueue$Runner.run(SimpleAMQQueue.java:1542)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)