Archived
Long blocking time when connecting to busy replica group after upgrade to ICE 3.7.5
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));
Comments
-
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));
0 -
The case resolved by using uncheckedCast, so it may be not a problem at all.
0