Igniters,

I'd like to start a dedicated thread for discussion of the design of
services hot redeployment. The previous service design discussion can be
found in the following thread: [1]

Currently adding a new service or implementation change of an existing one
requires restarting the hosting nodes. Service instances are deserialized
using an application class loader, so the service class should be present
on the classpath of the node. The only way to change the set of available
classes is to restart the node. Potentially the whole cluster restart can
be required. This is a major drawback in the current design. This problem
should be addressed first.

At the same time this problem can be resolved by relatively simple code
changes. We need to change the way services are deserialized, and use a
mechanism, that allows dynamic class changes. Deployment SPI [2] seems to
be suitable for this. We can apply the same approach, which is used for
tasks, so services will become dynamically modifiable.

With this approach user will still need to perform a cancel-deploy routine
for the changed service. But even with that the usability improvement will
be huge. We'll think about service availability improvement after the first
part is finished.

Thoughts?

[1]
http://apache-ignite-developers.2346864.n4.nabble.com/Service-versioning-td20858.html
[2] https://apacheignite.readme.io/docs/deployment-spi#deploymentspi

Denis

Reply via email to