...
- Error during service initialization on a node, included into assignment. In this case the problematic node sends failure details to the coordinator over the communication protocol. Once the coordinator receives the failure details, it sends a discovery message, containing this information, to all nodes, so the deploying methods can throw a corresponding exception.
- Failure of a node, included into assignment. This situation triggers recalculation of service deployment assignments. Coordinator node sends another discovery message with a set of new assignments in it. If a node already initialized a service and it is not present in the new assignments set, then the service should be cancelled.
- Coordinator failure. This situation is processed in a similar way as the previous one. The only difference is that the nodes should resend deployment results to the new coordinator.
Service versioning
It should be possible to update service implementation or configuration without downtime. Introduction of a service version should solve this problem.
ServiceConfiguration
class should contain integer version
parameter, that will increase monotonically between deployments.
When a node is processing a service deployment request, it performs deployment only if it doesn't have a deployed service of the same or a newer version.
Service version update implies classes redeployment. So, user is responsible for configuring a proper DeploymentSpi to be able to replace service classes at runtime. Service processor should unregister and re-register a service class, when version update happens.
Deployment after restart
TBD
Risks and Assumptions
These changes will break compatibility with previous versions of Apache Ignite completely.
...