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

Re: [xmlblaster] missing volatile messages



Eugene,

thanks for this detailed test.

We couldn't reproduce loosing messages with your scripts.
We tried on same server machine and distributed over two machines.
But we once got a - none reproducable - stack trace.
So the combination with XPath and volatile messages and
erasing the topic during operation (by the first of your publishers finishing)
seems to be some open issue.
We have added now some code to handle the described NPE.


> "but some messages(<1%) completely lost."
It could be possible because of the first publisher is erasing the topic
during the second publisher is firing.
Anyhow, i couldn't reproduce any lost here.

We'll keep the case open,

Marcel

We have been using xmlBlaster server for a while and it worked well. But after upgraded it from
version 1.0.6 to 1.1.1, we noticed volatile message losing when the subscribers is running.


In order to figure out what was going wrong, I wrote three shell scripts for testing:
pubtest.sh, subtest.sh and validate.sh, which are attached with the mail.


Test machines:
  Server machine:
     AMD Athlon(tm) 64 Processor 3000+, 1 GM RAM
     Debian GNU/Linux 3.1, kernel 2.6.11
     Java version 1.5.0_06
     xmlBlaster v1.1.1

  Client machine:
     Pentium III (Coppermine), 2 GM RAM
     Debian GNU/Linux 3.1, kernel 2.6.10
     Java version 1.4.2_09
     xmlBlaster v1.1.1

Test steps:
  1. restart xmlBlaster server in server machine using default configs.
  2. run subtest.sh in client machine.
  3. after subscription is finished, run pubtest.sh in client machine.
  4. after publishing is done, run validate.sh
  5. run diff to figure out missing messages

Testing:
  1. subtest.sh setup three subscribers by using xpath:
       "//service[.='AA_AA' and ../type[.='BB_BB']]"

2. pubtest.sh setup two publishers, each of them published 100 volatile messages to oid=AABB,
by using client tags:
<service>AA_AA</service><type>BB_BB</type><pub1-%counter/>
<service>AA_AA</service><type>BB_BB</type><pub2-%counter/>


Test results:
1. after testing many times, I found that most of messages(>97%) reached all subscribers,
some messages(2%) reached part of subscribers, but some messages(<1%) completely lost.
Checked the server's log file and confirmed that the server received all messages, but
some of them were not pushed to subscribers.


2. if run both xmlBlaster server and clients in a same machine, NO messages lost (testing more than 10 times).

  3. tested with xmlBlaster v1.2, and messages still got lost.

4. changed publish number from 100 to 1000, got the followwing NullPointerException.
I thought it was caused by queue's maxEntriesCache setting (default as 1000). After
increasing maxEntriesCache to 2000 for both connect queue and callback queue, no more
NullPointerException occurred.


[Mar 21, 2006 3:06:07 PM ERROR XmlBlaster.SOCKET.tcpListener-ewu AvailabilityChecker] publishArr() failed:
XmlBlasterException serverSideException=true node=[xmlBlaster_127_0_0_1_3412] location=[RequestBroker]
java.lang.NullPointerException
stackTrace=java.lang.NullPointerException
at org.xmlBlaster.engine.TopicHandler.invokeCallback(TopicHandler.java:1350)
at org.xmlBlaster.engine.TopicHandler.invokeCallbackAndHandleFailure(TopicHandler.java:1170)


at org.xmlBlaster.engine.TopicHandler.publish(TopicHandler.java:645)
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:534)
errorCode=internal.nullpointer message=#1.1.1 errorCode=internal.publish: An internal error occurred
when processing a publish() request. /node/xmlBlaster_127_0_0_1_3412/client/ewu/-9
at org.xmlBlaster.util.XmlBlasterException.convert(XmlBlasterException.java:665)


at org.xmlBlaster.util.XmlBlasterException.convert(XmlBlasterException.java:654)

at org.xmlBlaster.engine.RequestBroker.publish(RequestBroker.java:1697)
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:534)
versionInfo=version=1.1.1,revision=1.1.1,os.name=Linux,os.version=2.6.11.7-zh,java.vm.vendor=Sun Microsystems Inc.,
java.vm.version=1.4.2_09-b05,os.arch=i386,build.timestamp=03/17/2006 05:29 PM,build.java.vendor=Sun Microsystems Inc.,
build.java.version=1.4.2_09 errorCode description=
http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.listing.html#internal.nullpointer





I tryed to debug but failed, as some log messages never showed up even if I turned on -trace -call and -dump.


Hope the message could be helpful for your debugging.


Best Regards,

Eugene Wu