Archived

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

IceGrid Activate Timeout

I am studying to use IceGrid and I do configure right to one node condition. The service in the node can be invoked and activate remotely by using IceGridAdmin. But when I configured for two nodes for a application, neither services in those nodes can be activated. I do see the invocation of the program but hanging in the activate() method, and getting back a activationTimeOut exception after few seconds.

Below is my deploy configuration:
For one node:
<icegrid>
<application name="IceTest">
<node name="Node1">
<server id="MessageServer1"
exe="./startserver"
activation="on-demand">
<adapter name="MessageAdapter"
id="MessageAdapter"
register-process="true"
endpoints="tcp"/>
</server>
</node>
</application>
</icegrid>

For two nodes:
<icegrid>
<application name="IceTest">
<node name="Node1">
<server id="MessageServer1"
exe="./startserver"
activation="on-demand">
<adapter name="MessageAdapter"
register-process="true"
endpoints="tcp"/>
</server>
</node>

<node name="Node2">
<server id="MessageServer2"
exe="./startserver"
activation="on-demand">
<adapter name="MessageAdapter"
register-process="true"
endpoints="tcp"/>
</server>
</node>
</application>
</icegrid>


I think the only different between these two configuration is that I need to remove adapter id from the file. If I add adapter ID to the two-nodes one, the service adding the adpater ID do can be activated. But I see the manual, it is not good to name the same service in the different node using different name.

Do I miss something?

Comments

  • By the way, I didn't set the register and node in the same process. So I have one register configuration file and two nodes configuration file.

    Register configuration:
    IceGrid.Registry.Client.Endpoints=tcp -h 192.168.64.183 -p 10000
    IceGrid.Registry.Server.Endpoints=tcp -h 192.168.64.183
    IceGrid.Registry.Internal.Endpoints=tcp -h 192.168.64.183
    IceGrid.Registry.AdminPermissionsVerifier=IceGrid/NullPermissionsVerifier
    IceGrid.Registry.Data=./registry

    Node1 configuration:
    IceGrid.Node.Endpoints=tcp -h 192.168.64.214
    IceGrid.Node.Name=Node1
    IceGrid.Node.Data=./node
    Ice.Default.Locator=IceGrid/Locator:tcp -h 192.168.64.183 -p 10000

    Node2 configuration:
    NodeIceGrid.Node.Endpoints=tcp -h 192.168.64.183
    IceGrid.Node.Name=Node2
    IceGrid.Node.Data=./node
    Ice.Default.Locator=IceGrid/Locator:tcp -h 192.168.64.183 -p 10000

    Server configuration:
    Ice.ServerId=MessageServer1
    Ice.ProgramName=IceTest
    MessageAdapter.AdapterId=MessageAdapter
    MessageAdapter.Endpoints=tcp -h 192.168.64.214 -p 10001
    MessageAdapter.Locator=IceGrid/Locator:tcp -h 192.168.64.183 -p 10000
    MessageAdapter.RegisterProcess=1
    Ice.ThreadPool.Server.Size=30
    Ice.ThreadPool.Client.Size=30
    Ice.ThreadPool.Client.SizeWarn=10
  • benoit
    benoit Rennes, France
    Hi,

    Is your server explicitly loading the server configuration file mentioned above? If that's the case, it's most likely the reason why your server can't be activated.

    You shouldn't use a configuration file when deploying a server with an XML descriptor. Instead, you should set the properties in the XML descriptor and let IceGrid generate the configuration file (the configuration file is generated in the IceGrid node data directory, see ./node/servers/MessageServer1/config/config).

    See also the IceGrid demos for some XML descriptor examples.

    Cheers,
    Benoit.
  • Thanks, benoit.

    Yeah, it worked. Then , is it possible for me to set threadpool for server in XML?
  • mes
    mes California
    Hi,

    You can add configuration properties to your server's XML descriptor. The Ice manual provides an example of this here (see section 39.16.16).

    Take care,
    Mark