[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xmlblaster] NullPointerException



Hi,

We've just upgraded to the latest 1.1.1 version, and it looks like
the spurious NullPointerException problem we've been experiencing
is still present.

We see some strange behaviour once in awhile too - messages disappearing,
for example.  The client shows successfully published, but the subscriber
never gets notified.

I looked through all the logs and I only found one exception (which I
believe coincided roughly with the time that the message disappeared):

java.lang.NullPointerException
        at org.xmlBlaster.engine.TopicHandler.entryDestroyed(TopicHandler.java:928)
        at org.xmlBlaster.engine.MsgUnitWrapper.toDestroyed(MsgUnitWrapper.java:595)
        at org.xmlBlaster.engine.MsgUnitWrapper.setReferenceCounter(MsgUnitWrapper.java:307)
        at org.xmlBlaster.engine.TopicHandler.publish(TopicHandler.java:658)
        at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1677)
        at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1483)
        at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1477)
        at org.xmlBlaster.engine.XmlBlasterImpl.publishArr(XmlBlasterImpl.java:185)
        at org.xmlBlaster.util.protocol.RequestReplyExecutor.receiveReply(RequestReplyExecutor.java:402)
        at org.xmlBlaster.protocol.socket.HandleClient.handleMessage(HandleClient.java:231)
        at org.xmlBlaster.protocol.socket.HandleClient.run(HandleClient.java:352)
        at java.lang.Thread.run(Thread.java:595)


Now, I have discovered what I think it is a race condition that may
trigger this.  I found it using the demo client code to publish some
test messages to our clients.

If client A publishes a persistent message, client B receives it,
then client A *and* client B try to erase it at around the same time,
the xmlblaster server will very often explode with a nullpointerexception
that gets thrown back to the client, like this:

Mar  8 08:56:55 wolverine1 error publishing response message errCode=internal.nullpointer, message=XmlBlasterException serverSideException=true node=[xmlBlaster_172_23_254_15_10412] location=[RequestBroker]
Mar  8 08:56:55 wolverine1 java.lang.NullPointerException
Mar  8 08:56:55 wolverine1 stackTrace=java.lang.NullPointerException
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.TopicHandler.entryDestroyed(TopicHandler.java:928)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.MsgUnitWrapper.toDestroyed(MsgUnitWrapper.java:595)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.MsgUnitWrapper.setReferenceCounter(MsgUnitWrapper.java:307)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.TopicHandler.publish(TopicHandler.java:658)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1677)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1483)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1477)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.engine.XmlBlasterImpl.publishArr(XmlBlasterImpl.java:185)
Mar  8 08:56:55 wolverine1      at org.xmlBlaster.util.protocol.RequestReplyExecutor.receiveReply(RequestReplyExecutor.java:402)        at org.xmlBlaster.protocol.socket.HandleClient.handleMessage(Han

This was fairly easy to reproduce depending on how long I took to
hit a key in the HelloWorldPublish demo after it published the message,
but before it erased it.

-- 
David Kerry