Hi,
I have modified my app to reliably fail.
The code below is a brief outline of my server and client apps.
If I remove the Ice shutdown call from the servant, IceGrid kills the server process after the specified deactivation timeout (2 sec)
. If I leave the call in, IceGrid fails to destroy the process.
With the shutdown call included, IceGrid reports the server state to be Deactivating prior to commanding IceGrid to stop the server. However the admin stopSever() method fails with a NodeUnreachableException.
Without the shutdown call included, IceGrid reports the server state to be Active prior to commanding IceGrid to stop the server.
Code:
// Servant main thread
static void Main()
{
// create and activate communicator
// create power control servant
// activate adapter
communicator.waitForShutdown();
communicator.destroy();
while (true)
{
Thread.Sleep(1000);
Console.WriteLine("Tick...");
}
}
Code:
// Servant
class PowerControlServant : Slice.PowerControl.PowerDisp__
{
public override void PowerOff(Ice.Current current__)
{
communicator.shutdown();
}
}
Code:
// Client app
main()
{
// Start all servers using IceGrid Admin session
// Create proxy to PowerControlServant
// Issue PowerOff command on proxy
// Stop all servers using IceGrid Admin session
}