Archived
This forum has been archived. Please start a new discussion on GitHub.
IceGrid endpoint selection problem.
Hi,
I have a problem using IceGrid, replica group and AMI invocations from the client: all the remote calls (begin_Calculate) are sent to the same endpoint while I am expecting to be randomly picked from the 4 of the virtual adapter. I have disabled the proxy connection cache and set the timeout to 0 but it behave the same. Where am I wrong?
The application deployment is:
The client does a loop using AMI then it stops to wait for results, like:
Here it is a part of the client log (the only one connection estabilished with a server):
I have a problem using IceGrid, replica group and AMI invocations from the client: all the remote calls (begin_Calculate) are sent to the same endpoint while I am expecting to be randomly picked from the 4 of the virtual adapter. I have disabled the proxy connection cache and set the timeout to 0 but it behave the same. Where am I wrong?
The application deployment is:
<icegrid>
<application name="SA">
<server-template id="SAServer">
<parameter name="index"/>
<parameter name="addr"/>
<server id="SAServer-${index}" exe="./server" activation="on-demand">
<adapter name="SAIce" endpoints="tcp -h ${addr}" replica-group="ReplicatedAdapter" />
<property name="Identity" value="salg" />
<property name="Ice.MessageSizeMax" value="512000" />
<property name="Ice.Trace.Network" value="2" />
<property name="Ice.Trace.Protocol" value="2" />
<property name="Ice.Trace.Locator" value="2" />
<property name="Ice.ThreadPool.Server.Size" value="16" />
<property name="Ice.ThreadPool.Client.Size" value="16" />
<property name="IceMX.Metrics.Debug.GroupBy" value="id"/>
<property name="IceMX.Metrics.Debug.Disabled" value="1"/>
<property name="IceMX.Metrics.ByParent.GroupBy" value="parent"/>
<property name="IceMX.Metrics.ByParent.Disabled" value="1"/>
</server>
</server-template>
<node name="Node1" >
<server-instance template="SAServer" index="1" addr="192.168.1.2" />
</node>
<node name="Node2" >
<server-instance template="SAServer" index="2" addr="192.168.1.2" />
</node>
<node name="Node3" >
<server-instance template="SAServer" index="3" addr="192.168.1.3" />
</node>
<node name="Node4" >
<server-instance template="SAServer" index="4" addr="192.168.1.4" />
</node>
<replica-group id="ReplicatedAdapter" proxy-options="-e 1.1">
<load-balancing type="random" n-replicas="4"/>
<description>A description of this replica group.</description>
<object identity="salg" type="::Demo::AAIce" />
</replica-group>
</application>
</icegrid>
The client does a loop using AMI then it stops to wait for results, like:
for(unsigned int i=0; i<nruns; i++)
{
....
Ice::ObjectPrx obj = communicator()->stringToProxy("salg");
SAIcePrx salg = SAIcePrx::checkedCast(obj);
salg->ice_connectionCached(false);
salg->ice_locatorCacheTimeout(0);
....
salg->begin_Calculate();
// wait results after 64 Calculate calls
....
}
Here it is a part of the client log (the only one connection estabilished with a server):
-- 02/06/14 15:37:37.355 ./clientSim: Locator: retrieved endpoints from locator, adding to locator table adapter = ReplicatedAdapter endpoints = tcp -h 192.168.1.2 -p 56069:tcp -h 192.168.1.2 -p 44414:tcp -h 192.168.1.3 -p 46487:tcp -h 192.168.1.4 -p 56807: -- 02/06/14 15:37:37.356 ./clientSim: Network: trying to establish tcp connection to 192.168.1.3:46487 -- 02/06/14 15:37:37.356 ./clientSim: Network: tcp connection established local address = 192.168.1.130:48032 remote address = 192.168.1.3:46487
0
Comments
-
Hi,
Try changing your code to the following:SAIcePrx salg = SAIcePrx::checkedCast(obj); salg = salg->ice_connectionCached(false); salg = salg->ice_locatorCacheTimeout(0);
The ice_xxx proxy methods are factory methods, they return a new proxy with the new proxy setting.
Cheers,
Benoit.0 -
Hi,
Try changing your code to the following:SAIcePrx salg = SAIcePrx::checkedCast(obj); salg = salg->ice_connectionCached(false); salg = salg->ice_locatorCacheTimeout(0);
The ice_xxx proxy methods are factory methods, they return a new proxy with the new proxy setting.
Cheers,
Benoit.
That solve the issue, thanks.
Andrea Zoli0