Marcel Ruff
Wed, 02 Apr 2008 11:01:42 -0700
Hi David, if the server side session times out the expected behavior is that the client goes to dead (what you client seem to do). That your client recovers from DEAD is not intended and is considered a bug, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.failsafe.html#failsave The transition (9) and (8) should not happen. Thanks for reporting best regards Marcel David Kerry wrote:
On Mon, Mar 10, 2008 at 11:10:54AM +0100, Marcel Ruff wrote:Hi David, fail safe mode should also set a positive session id, like this the client queue is found again on restart and you don't need another queue to store the entries. Something likejava -Dcom.sun.management.jmxremote javaclients.HelloWorldSubscribe -session.name subscriber/1 -dispatch/callback/retries -1 -connect/qos/persistent true -persistentSubscribe trueThe persistent settings are only needed to recover from server restart and to notloose a message if a publisher reconnects and publishes earlier, before our subscriber reconnects and re-subscribes. best regards, MarcelHi Marcel, Something's still fishy here. Although I'm not setting a persistent queue (I'm not concerned about queued incoming messages while disconnectedright now), I am setting all the other parameters for a failsafe connection (callback retries -1, positive session id).I've setup my client to be notified of connection state via the I_ConnectionStateListener interface. When I attempt to publish a message after the session times out, I get a callback when the session times out (reachedDead), which is correct. However, what's not happening reliably is the reachedPolling state. Most of the time my test client goes reachedDead -> reachedPolling -> reachedAlive. In some cases it just goes reachedDead and no further. I did note this exception that popped out on the client side in a casewhere the client didn't get to a polling state. I don't know if it's relevant or not though. I didn't see any other log output or exceptions aroundthe time this occurred. The server side simply indicates the session timed out. 2008-04-01 13:45:36,602 INFO [STDOUT] java.lang.Exception: Stack trace 2008-04-01 13:45:36,603 INFO [STDOUT] at java.lang.Thread.dumpStack(Thread.java:1158) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.client.ClientErrorHandler.handleError(ClientErrorHandler.java:79) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchManager.givingUpDelivery(DispatchManager.java:379) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchManager.shutdownFomAnyState(DispatchManager.java:371) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchConnectionsHandler.updateState(DispatchConnectionsHandler.java:368) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchConnectionsHandler.toDead(DispatchConnectionsHandler.java:336) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchConnection.handleTransition(DispatchConnection.java:498) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchConnection.send(DispatchConnection.java:241) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchConnectionsHandler.send(DispatchConnectionsHandler.java:455) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchWorker.run(DispatchWorker.java:70) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchManager.putPre(DispatchManager.java:668) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.dispatch.DispatchManager.putPre(DispatchManager.java:642) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.util.queue.ram.RamQueuePlugin.put(RamQueuePlugin.java:723) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.client.XmlBlasterAccess.queueMessage(XmlBlasterAccess.java:901) 2008-04-01 13:45:36,603 INFO [STDOUT] at org.xmlBlaster.client.XmlBlasterAccess.publish(XmlBlasterAccess.java:1061) 2008-04-01 13:45:36,603 INFO [STDOUT] at com.navahonetworks.app.jboss.xmlblaster.NNXmlBlasterClientImpl.publish(NNXmlBlasterClientImpl.java:165) 2008-04-01 13:45:36,603 INFO [STDOUT] at com.navahonetworks.app.jboss.xmlblaster.NNXmlBlasterClientImpl.publish(NNXmlBlasterClientImpl.java:138) 2008-04-01 13:45:36,604 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2008-04-01 13:45:36,604 INFO [STDOUT] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 2008-04-01 13:45:36,604 INFO [STDOUT] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 2008-04-01 13:45:36,604 INFO [STDOUT] at java.lang.reflect.Method.invoke(Method.java:585) 2008-04-01 13:45:36,604 INFO [STDOUT] at com.navahonetworks.ejb.session.XmlblasterLogicBean.publish(XmlblasterLogicBean.java:287) 2008-04-01 13:45:36,604 INFO [STDOUT] at com.navahonetworks.ejb.session.XmlblasterLogicBean.publish(XmlblasterLogicBean.java:372) 2008-04-01 13:45:36,604 INFO [STDOUT] at com.navahonetworks.ejb.session.XmlblasterLogicBean$TxSyncThread.run(XmlblasterLogicBean.java:809) 2008-04-01 13:45:36,605 ERROR [STDERR] 1-Apr-2008 1:45:36 PM org.xmlBlaster.util.dispatch.DispatchManager switchToASyncMode INFO: connection:client/app_prod/12: Switched to asynchronous message delivery
-- Marcel Ruff http://www.xmlBlaster.org http://watchee.net Phone: +49 7551 309371