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

Reply via email to