Archived

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

icegridnode fails to apply configuration changes to services using a shared communicator

When applying configuration changes to icebox services that are using a shared communicator (e.g. icegridadmin -e "application update --no-restart app.xml"), property changes are not propagated correctly to services. This is due to the change to using IceBox.SharedCommunicator.Properties to identify the property facet of shared communicators in recent versions of Ice.

This is quite problematic when updating service properties, as without enabling tracing, changes will fail to apply silently and other changes to the configuration that would've been applied afterwards also won't make it to the service, leaving the application in an inconsistent state and confusing the user of the grid.

When adding these trace properties to ICE_CONFIG:

  IceGrid.Registry.Trace.Application=2
  IceGrid.Registry.Trace.Server=2

the following error message is shown in the registry log:

  OutgoingAsync.cpp:547: Ice::FacetNotExistException:
  facet does not exist:
  identity: `30842DED-4C0D-1726-A6AD-AF111C831A37/admin'
  facet: IceBox.Service.MyService.Properties
  operation: setProperties

The problem is in ServiceI.cpp, where the facet name is not constructed correctly to account for the new naming convention.

We'll open a pull request on github that corrects this problem shortly. We already committed a fix to the FreeBSD port of Ice: https://svnweb.freebsd.org/ports?view=revision&revision=426170.

Comments