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

Re: [xmlblaster] Problems shutting down xmlBlaster with persistent topics



Aaron Silinskas wrote:
Hello,
It seems when I subscribe to a topic with SubscribeQos.setPersistent(true), then unsubscribe, I get a warning and exception when shutting down xmlBlaster. It seems the disconnect is erasing the topic, which tries to unsubscribe first without checking if the subscription still exists.


[10/20/04 1:57:09 PM WARN XmlBlaster.MainThread TopicHandler-/node/xmlBlaster_192_168_1_101_3412/topic/mytopic] , can't unsubscribe, you where not subscribed to subscription ID=__subId:xmlBlaster_192_168_1_101_3412-4
[10/20/04 1:57:09 PM ERROR XmlBlaster.MainThread Authenticate-/node/xmlBlaster_192_168_1_101_3412] Problem on session shutdown, we ignore it: null source
java.lang.IllegalArgumentException: null source
at java.util.EventObject.<init>(Unknown Source)
at org.xmlBlaster.engine.SubscriptionEvent.<init>(SubscriptionEvent.java:28)
at org.xmlBlaster.engine.TopicHandler.removeSubscriber(TopicHandler.java:1055)
at org.xmlBlaster.engine.SubscriptionInfo.removeSubscribe(SubscriptionInfo.java:263)


at org.xmlBlaster.engine.ClientSubscriptions.removeFromClientSubscriptionMap(ClientSubscriptions.java:490)

at org.xmlBlaster.engine.ClientSubscriptions.sessionRemoved(ClientSubscriptions.java:322)

at org.xmlBlaster.authentication.Authenticate.fireClientEvent(Authenticate.java:786)

at org.xmlBlaster.authentication.Authenticate.resetSessionInfo(Authenticate.java:704)

at org.xmlBlaster.authentication.Authenticate.runlevelChange(Authenticate.java:918)

at org.xmlBlaster.engine.runlevel.RunlevelManager.fireRunlevelEvent(RunlevelManager.java:312)

at org.xmlBlaster.engine.runlevel.RunlevelManager.changeRunlevel(RunlevelManager.java:206)

    at org.xmlBlaster.Main.shutdown(Main.java:230)
    at org.xmlBlaster.Main.checkForKeyboardInput(Main.java:325)
    at org.xmlBlaster.Main.init(Main.java:202)
    at org.xmlBlaster.Main.<init>(Main.java:108)
    at org.xmlBlaster.Main.main(Main.java:540)

I have fixed this (see subversion), it had no impact on functionality.



When xmlBlaster is started again, I get these warnings on start-up:

[10/20/04 1:58:44 PM TRACE XmlBlaster.MainThread QueuePropertyBase] Lookup of nodeId=xmlBlaster_192_168_1_101_3412 context=null getRootTagName=queue relating=history propName= defaultValue=CACHE,1.0
[10/20/04 1:58:44 PM TRACE XmlBlaster.MainThread QueuePropertyBase] Initialized:
<queue relating='history' maxEntries='10' maxEntriesCache='10'/>[10/20/04 1:58:44 PM WARN XmlBlaster.MainThread RequestBroker-/node/xmlBlaster_192_168_1_101_3412] Cluster manager is not ready, handling message '__sys__UserList' locally


...

[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread PluginManagerBase] Plugin 'LOCAL,1.0 successfully initialized.
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread CbDispatchConnection-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] Created callback plugin 'LOCAL'
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread PluginInfo-LoggableDevicePlugin] Trying contextNode=null propertyKey=LoggableDevicePlugin[console][1.0]
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread Global-/node/xmlBlaster_192_168_1_101_3412] Setting logDevice local[console]=org.jutils.log.LogDeviceConsole
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread Global-/node/xmlBlaster_192_168_1_101_3412] New log channel 'local' ready: ERROR | WARN | INFO | TRACE
[10/20/04 1:58:45 PM ERROR XmlBlaster.MainThread CallbackLocalDriver] The given callback id ='LOCAL:27929635' is invalid: errorCode=internal.unknown message=could not retreive the LocalCallbackImpl, was there really one started
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread DispatchConnection-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] XmlBlasterException errorCode=[resource.configuration.address] serverSideException=true location=[Local-CallbackHandleInvalid] message=[The given callback Id is invalid: errorCode=internal.unknown message=could not retreive the LocalCallbackImpl, was there really one started : ] [See URL http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.listing.html#resource.configuration.address]


[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread CallbackLocalDriver] Shutdown implementation is missing
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread DispatchConnectionsHandler-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] Destroyed one callback connection, 0 remain.
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread DispatchConnectionsHandler-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] updateState() oldState=UNDEF conList.size=0
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread DispatchConnectionsHandler-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] Load LOCAL:27929635: XmlBlasterException errorCode=[communication.noConnection.dead] serverSideException=true location=[Local-CallbackHandleInvalid] message=[The given callback Id is invalid: errorCode=internal.unknown message=could not retreive the LocalCallbackImpl, was there really one started : Original erroCode=resource.configuration.address] [See URL http://www.xmlblaster.org/xmlBlaster/doc/requirements/admin.errorcodes.listing.html#communication.noConnection.dead]


[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread DispatchConnectionsHandler-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] updateState() oldState=DEAD conList.size=0
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread DispatchConnectionsHandler-callback:/node/xmlBlaster_192_168_1_101_3412/client/user/-1] Reached state = DEAD
[10/20/04 1:58:45 PM TRACE XmlBlaster.MainThread SessionInfo-/node/xmlBlaster_192_168_1_101_3412/client/user/-1] Session lasts forever, requested expiry timer was 0

Negative session ids "user/-1" don't support persistent sessions or subscriptions, you need to use a positive session id (like -session.name joe/1) to use persistent session/subscriptions, see http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.failsafe.html#naming http://www.xmlblaster.org/xmlBlaster/doc/requirements/engine.persistence.session.html

With "user/-1" you have the above (stack trace) resource leak on harddisk.
With the SOCKET or XMLRPC protocol a client could dump the secret session ID and reuse
it on client startup - in this case it would work out fine (no resource leak).

Our CORBA protocol plugin can't handle persistent session with negative public session id,
as the CORBA layer is the creator of the secret session id and is creating a new one on each startup.

I have added a server side warning output about this issue,

regards,

Marcel

Thanks, Aaron




--
http://www.xmlBlaster.org