Home Comments

Long blocking time when connecting to busy replica group after upgrade to ICE 3.7.5

raycrayraycray Member Ray ChengProject: Electronic Trading
edited August 2021 in Comments

Hi,

I have upgraded from ICE 3.7.1 to 3.7.5 (with c++11 features too) and experienced long queue up time when connecting to a busy replica group. I have a replica group which work as Pricing calculators, and I have 2 server applications start almost at the same time and connect to it. I found that when the first server connected and sent lots of request, the second server will be blocked in below code until the queue up tasks completed. But in previous version (3.7.1) it could "connect" and return immediately. Please kindly advice any workaround for this.

CalcNodeEndpoint endpoint{ _replicaGroup };
auto comm = _iceHandler.comm();
auto obj = comm->stringToProxy(endpoint.objectId());
auto proxy = Ice::checkedCast<slice::CalcNodePrx>(obj);
_calcNodePrx = Ice::checkedCast<slice::CalcNodePrx>(proxy->ice_connectionCached(false));
Tagged:

Comments

  • raycrayraycray Member Ray ChengProject: Electronic Trading
    edited August 2021

    after adding more lots I found the blocking code is
    auto proxy = Ice::checkedCast<slice::CalcNodePrx>(obj);

    And I have reviewing my code it was originally in c++98 as below:

    auto proxy = slice::CalcNodePrx::uncheckedCast(obj);
    _calcNodePrx = slice::CalcNodePrx::uncheckedCast(proxy->ice_connectionCached(false));
    
  • raycrayraycray Member Ray ChengProject: Electronic Trading

    The case resolved by using uncheckedCast, so it may be not a problem at all.

Sign In or Register to comment.