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

Re: [xmlblaster] Release 1.2 fail-safe: reconnected and publishing, but no sync GET possible



Johann Thomas wrote:
Hello Marcel,

I have a standalone server node and few clients. I do persistent subscribes, publishes and gets (both xpath and oid) and erase, but ignore updates (incoming messages).

Seems I have some misunderstandings relating the client queuing: I switched to Oracle on client side (not sure it worked), now I tried if fail-safe still works, but only publishes work after the restart of the xmlBlaster standalone server. The message queued on client side is delivered after reconnect, also further publishes work. Also, no XB_ENTRIES table is created in Oracle.
This works fine here, the XB_ENTRIES is properly created in my oracle by the client
(the server ran with HSQLDB).


My clients xmlBlaster.properties:
---------------------------------
JdbcStorage[Oracle]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
                   url=jdbc:oracle:thin: at myhost:1521:xmlb,\
                   user=xmlblaster,\
                   password=secret,\
                   connectionPoolSize=1,\
                   connectionBusyTimeout=90000,\
                   maxWaitingThreads=300,\
                   tableNamePrefix=XB_,\
                   entriesTableName=ENTRIES,\
                   dbAdmin=true
StoragePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
QueuePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
JdbcDriver.drivers=oracle.jdbc.driver.OracleDriver
JdbcDriver.mapping[Oracle]=string=VARCHAR(128),longint=NUMBER(19),int=NUMBER(10),blob=BLOB,boolean=CHAR(1)
...
---------------------------------

The stack trace below tells you that we don't support doing a get() call during we are offline
as we currently don't have a way to pass you back the returned messages in async mode (when on reconnect the get()s are send).
It would be possible by our client library to deliver those using the update() but this is not implemented,
see the table
"Client side queuing during reconnect-polling" at http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.failsafe.html#queuing
(as noted in the exception below),


regards
Marcel



At the client side I have configured:
------snip---------
JdbcStorage[Oracle]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\


...\
entriesTableName=ENTRIES,\
dbAdmin=true
StoragePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}StoragePlugin[RAM][1.0]=org.xmlBlaster.engine.msgstore.ram.MapPlugin


# avoid meat caching!
StoragePlugin[CACHE][1.0]=${JdbcStorage[Oracle]}
#
QueuePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
QueuePlugin[RAM][1.0]=org.xmlBlaster.util.queue.ram.RamQueuePlugin
QueuePlugin[CACHE][1.0]=org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin,persistentQueue=JDBC,transientQueue=RAM


JdbcDriver.drivers=\
                  oracle.jdbc.driver.OracleDriver

------/snap------

Client init:
------snip---------------
// ...
qos.setPersistent(true);
//...
qos.setSessionName(...);
// Setup fail-safe handling ...
Address addressProp = new Address(m_oXGlob);
addressProp.setDelay(4000L); // retry connecting every 4 sec
addressProp.setRetries(-1); // -1 == forever
addressProp.setPingInterval(0L); // switched off
qos.getClientQueueProperty().setMaxEntries(1000); // queue up to 1000
// messages
m_oXCon.registerConnectionListener(new I_ConnectionStateListener() {
// logs events
...
};
m_oXCon.connect(qos, new I_Callback() {
public String update(String cbSessionId, UpdateKey updateKey, byte[] content, UpdateQos updateQos)
{
// ...
return ""; }
};
------/snap------


Exception log:
------snip---------
ERROR: trace:
errorCode=user.configuration message=#14953M Synchronous GET on oid='null' is not possible in offline/polling mode. See 'http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.failsafe.html' for more details.
at org.xmlBlaster.client.dispatch.ClientDispatchConnectionsHandler.createFakedReturnObjects(ClientDispatchConnectionsHandler.java:157)


at org.xmlBlaster.util.dispatch.DispatchManager.putPost(DispatchManager.java:572)

at org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:568)

at org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:442)

at org.xmlBlaster.client.XmlBlasterAccess.queueMessage(XmlBlasterAccess.java:753)

at org.xmlBlaster.client.XmlBlasterAccess.get(XmlBlasterAccess.java:866)

...

DEBUG: Connection, state(==m_oXCon.getState()): ALIVE
DEBUG: try refresh: trace:
errorCode=user.configuration message=#14953M Synchronous GET on oid='__refresh' is not possible in offline/polling mode. See 'http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.failsafe.html' for more details.
at org.xmlBlaster.client.dispatch.ClientDispatchConnectionsHandler.createFakedReturnObjects(ClientDispatchConnectionsHandler.java:157)


at org.xmlBlaster.util.dispatch.DispatchManager.putPost(DispatchManager.java:572)

at org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:568)

at org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:442)

at org.xmlBlaster.client.XmlBlasterAccess.queueMessage(XmlBlasterAccess.java:753)

at org.xmlBlaster.client.XmlBlasterAccess.get(XmlBlasterAccess.java:866)
at org.xmlBlaster.client.XmlBlasterAccess.refreshSession(XmlBlasterAccess.java:416)


------/snap------

Regards,

Johann Thomas


P.S.: Sorry if it hits the list more than once... -- (sent with Mozilla)