Ilya, Every Service Grid user will welcome this feature. Fully for it.
Mentioned in the ticket that it has to be documented before the ticket is closed. — Denis > On Aug 15, 2017, at 8:18 AM, Ilya Lantukh <ilant...@gridgain.com> wrote: > > Igniters, > > Our current ServiceGrid implementation lacks several important features, > one of which is ability to upgrade Service without downtime. > > I've created ticket to add this feature: > https://issues.apache.org/jira/browse/IGNITE-6069. > > To implement it, the following problems must be solved: > - currently we can store only one BinaryMetadata instance for given > classname - if you change Service class implementation and then try to > deploy it, you might get an exception like > "org.apache.ignite.binary.BinaryObjectException: Binary type has different > field types". It can be solved by making (className, version) unique > metadata identifier. We can use serialVersionUuid as version. > - ServiceProxy must be aware of actual version and know if service is > currently being upgraded. If user tries to execute any method during > upgrade, proxy should implicitly wait until new version is ready. We > already have similar logic in IgniteCacheProxyImpl. > - To effectively and conveniently migrate service state to newer version, > we should add method to Service interface that will be executed before > start if older version was present. To keep API compatible, I suggest to > introduce interface UpgradableService (extends Service). > > Any critique and suggestions are welcome. > > -- > Best regards, > Ilya