Ognen,

There is no a simple answer to this question, but what you talk about is
still possible.

1. You should care about data compatibility. So, you need to store data in
the format that can be read by different app version - json; byte array
with custom serialize/deserialize logic; your custom Marshaller
implementation; or switching to JdkMarshalling that uses standard java
serialization and therefore support mutations.

2. App logic compatibility - your logic and services belonging to
compatible versions of the application should not break each other. I.e.
different nodes of the cluster can carry different versions of the app. If
node with newer version (client or server) initiates some operation on the
cache it can bring all the data locally change it and save to cache OR send
a job of a prev version to remote node. Then you can update your app
restarting Ignite nodes one by one. After update is complete and all nodes
carry same app version you can use any flow.

Please note that Ignite currently does not support hot Ignite version
upgrade. This is supported by GridGain. GridGain also has portable
marshaler eliminating data compatibility issues.

--Yakov

2015-05-27 18:46 GMT+03:00 Ognen Duzlevski <ognen.duzlev...@gmail.com>:

> Hello all,
>
> I would like to re-raise this issue and see if anyone has any
> production-grade recommendations for deploying new app versions to an
> ignite cache. Basically the issue is this: you have a new version of an app
> with new/changed classes that you would like cached. One way to deploy this
> is to copy a fat jar to ignite/lib and restart ignite. However, this gets
> to be pretty ornery as the real steps are dump cache, restart ignite with
> new fat jar, reload cache, deploy app. On a large cluster this becomes
> somewhat of an issue.
>
> Anyone have any recommendations or procedures they are following or
> anything that they are using of the Ignite functionality that I have
> missed?
>
> Thanks!
> Ognen
>

Reply via email to