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