Ice.ObjectNotExistException with ice_fixed in bidir connections

ThomasSThomasS Member Thomas SOrganization: bluecrestcapitalProject: market data

Hi,

In 3.7.2 I have started to receive Ice.ObjectNotExistException when using ice_fixed and trying to send a callback on a bidirectional connection. Removing the ice_fixed fixes the problem for my C# clients but it seems that it is a requirement to make the javascript clients work (https://forums.zeroc.com/discussion/46532/nodejs-callback-implementation). The problem happen when calling the same method a second time after getting a timeout exception (by putting a break-point on the server code). The following calls are received, execute and return normally but the callbacks throw Ice.ObjectNotExistException every time.

I can reproduce by taking the bdir example and duplicating line 34 in https://github.com/zeroc-ice/ice-demos/blob/3.7/csharp/Ice/bidir/Client.cs.
That causes the second call to throw Ice.ObjectNotExistException calling the call back.

By playing a bit with the demo code I noticed that I don't get this exception when running the whole using block in a loop ie by creating a new communicator for every call. But I would think that it is not the best way to do it.

Do I have to do something particular
Would you be able to advise on this please?

Thanks

Comments

  • xdmxdm La Coruña, SpainAdministrators, ZeroC Staff Jose Gutierrez de la ConchaOrganization: ZeroC, Inc.Project: Ice Developer ZeroC Staff

    Hi Thomas,

    When using bidir connections you should keep in mind that the lifetime of the fixed proxy is tied to the lifetime of the connection used to create it, the application should be prepared to deal with connection lost, I suspect that in your case Ice run-time is closing the connection, and subsequent calls are using a connection that was not setup for bidirectional use.

    You can check if the connection is being close by enabling network tracing Ice.Trace.Network=1

    You should also review the bidir connection documentation

    If the client forgot to call setAdapter on the connection, the notify call on the fixed proxy fails with an ObjectNotExistException raised by the client and propagated to the server.

    Cheers,
    José

Sign In or Register to comment.