Archived

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

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

raycray
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

  • raycray
    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));
    
  • The case resolved by using uncheckedCast, so it may be not a problem at all.