Archived

This forum has been archived. Please start a new discussion on GitHub.

NoEndpointException and dynamic loading using IcePack

We have been using IcePack successfully on Unix and Windows for a while now and we are really happy with it, indirect binding and on-demand activation are great features. We give icepackadmin an application file and then when we try to access the proxy of a service that has not yet been started, IcePack starts up the service automatically as you would expect.

However, we have recently noticed an issue with on-demand activation when we try to access the proxy for services contained in a large (~12 Meg) .so files or large jar files. We get a NoEndpointException when trying to do a checkedCast when trying to build the proxy for the first time:

Ice.NoEndpointException
proxy = "Demo_MarketBank -t @ Demo_MarketBank-Demo_MarketBank.Demo_MarketBank"
at IceInternal.Reference.getConnection(Reference.java:646)
at Ice._ObjectDelM.setup(_ObjectDelM.java:216)
at Ice.ObjectPrxHelper.__getDelegate(ObjectPrxHelper.java:657)
at Ice.ObjectPrxHelper.ice_isA(ObjectPrxHelper.java:46)
at Ice.ObjectPrxHelper.ice_isA(ObjectPrxHelper.java:34)
at icy.conductor.ConductorServantFacetPrxHelper.checkedCast(ConductorServantFacetPrxHelper.java:213)
at icy.conductor.PlatformView.buildProxy(PlatformView.java:236)


After the client side receives this exception, THEN we see from a debug statement that our service gets started in our overriden IceBox::start method (perhaps because you thread out the starting of the service? )

If we then try to go through the same series of steps to build the proxy a second time, it works! We can access our servant and go to town.

Again, this does NOT happen when smaller files have to be dynamically loaded by IcePack. Not positive, of course, this loading thing is the issue, but only clue we could find.

Just in case, we took out any timeout specifications we had using "-t" and now use the Ice.Override.Timeout=-1 setting in our configuration file.

We can't send you our libraries so we were just wondering if this is something you could test on your end and see if, in fact, this is a bug.

Thoughts and/or suggestions welcome.

Thanks,

Brian

Comments

  • benoit
    benoit Rennes, France
    I'm happy to hear you're successfully using IcePack!

    Your problem is most likely caused by the IcePack node not waiting enough for your server to start. If the object adapter (which caused the on-demand activation) isn't activated in the time specified by IcePack.Node.WaitTime (which defaults to 60s), your client will receive this Ice::NoEndpointException.

    Try to increase the IcePack.Node.WaitTime value, this should fix your problem!

    Benoit.
  • Thanks Benoit! I wish more problem were that easy to solve!