Archived

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

IceGrid

Hello,

We run the registry and an IceStorm service on a machine with four IP addresses, one of which is reserved to inter-machine communications and causes any Ice connection to hang up if selected. Our workaround to this was to explicitly specify endpoints for only the three IP addresses that we can actually access (we did this for IceStorm and the IceGrid registry).

I am now trying to use icegridnode, and am having similar problems. We specified the endpoints for the IceGrid Admin and Internal endpoints. Icegridadmin works fine now, but icegridnode does not.

Using icegridadmin, I did 'adapter endpoints IceGrid.Registry.Internal'; it came back with "dummy: <inactive>". Is that a problem?

Thanks,
Mark

Comments

  • benoit
    benoit Rennes, France
    Which Ice version do you use?

    The IceGrid registry doesn't register the IceGrid.Registry.Internal adapter with its database so I don't understand how you were able to lookup the endpoints for this adapter.

    Where do you explicitly specify the endpoints for the three IP addresses? in proxies? in adapter endpoints? How does the IceGrid node fail? Is there an error message or does it hang?

    The best would be to detail a little more the network configuration of your machines and post the configuration files for your registry and nodes. Please also post the error messages you're seeing.

    Cheers,
    Benoit.
  • We are currently using 3.1.0. I thought maybe it was funny that I could see internal endpoints. We specify the registry endpoints in a config file:

    IceGrid.Registry.Client.Endpoints=tcp -h redwood -p 11010:tcp -h redwood1 -p 11010:tcp -h redwood-ep -p 11010
    IceGrid.Registry.Server.Endpoints=tcp -h redwood:tcp -h redwood1:tcp -h redwood-ep
    IceGrid.Registry.Admin.Endpoints=tcp -h redwood:tcp -h redwood1:tcp -h redwood-ep
    IceGrid.Registry.Internal.Endpoints=tcp -h redwood -p 11011:tcp -h redwood1 -p 11011:tcp -h redwood-ep -p 11011
    IceGrid.Registry.Data=/var/opt/Ice/IceGrid/db
    IceGrid.Registry.DynamicRegistration=1
    Ice.Trace.Network=2
    Ice.UseSyslog=1



    I configure the icegridnode with this config file:

    #
    # Node configuration
    #
    IceGrid.Node.Name=SHSS_BL2
    IceGrid.Node.Endpoints=tcp
    IceGrid.Node.Data=/ep/etc/WavefrontControlSystem/BL2/icegrid_db

    Ice.Default.Locator=IceGrid/Locator:tcp -h redwood -p 11010



    Here is the XML file for icegridnode:

    <!-- SHSS_IceGrid.xml -->
    <icegrid>
    <application name="WavefrontControl">
    <node name="SHSS_BL2">
    <server id="ShackHartmannSvc"
    exe="/ep/sparc_SunOS5.10/bin/SHSServer"
    activation="on-demand">
    <adapter name="ShackHartmannSensor"
    endpoints="tcp"
    id="BL2_ShackHartmannAdapter"/>
    <property name="Ice.Trace.Network"
    value="0"/>
    <property name="Ice.MessageSizeMax"
    value="2048"/>
    <property name="Ice.ServerIdleTime"
    value="36000"/>
    <property name="ShackHartmannSensor.EDT_unit"
    value="0"/>
    <property name="ShackHartmannSensor.EDT_channel"
    value="0"/>
    </server>
    </node>
    </application>
    </icegrid>

    The client gets a "No endpoints" error. The client uses this config file:

    Ice.MessageSizeMax=2048
    ShackHartmannSensor.Proxy=ShackHartmannSensor@BL2_ShackHartmannAdapter
    Ice.Default.Locator=IceGrid/Locator:tcp -h redwood -p 11010

    And this is how the client creates the object adapter:

    SHSAdapter_ = communicator()->createObjectAdapter("ShackHartmannSensor");
  • benoit
    benoit Rennes, France
    For some reasons the registry can't figure out the endpoints of the server object adapter and this results in your client getting an Ice::NoEndpointException. This could be because your server fails to start or because the node can't be reached by the registry.

    Enabling the following trace properties in the registry configuration file should give you more information:
    IceGrid.Registry.Trace.Node=2
    IceGrid.Registry.Trace.Locator=2
    

    Cheers,
    Benoit.
  • I discovered that the LD_LIBRARY_PATH variable was not set properly to pick up a shared library used in the server. :rolleyes:

    I used the <env></env> tag to set it properly.