Cos, I tend to agree with you. The more I think about it, having various versions of classes in the same cache might prove to be a problem. With that said, ignite seems to want a (fat) jar placed in libs/ on startup, in order to become aware of all the external classes that could be cached at some point down the road. If you produced a new version of your app, one that adds more classes that could be cached - what is the current way to make ignite aware of this new (fat) jar or set of classes? One obvious way is to place the new jar into the libs/ directory on every node and restart the ignite cluster. However, this means that all the "live" cache needs to be abandoned (or at least persisted and re-loaded) - this seems expensive. What else is there to address this use case scenario?
Thanks! On Wed, Apr 29, 2015 at 1:06 AM, Konstantin Boudnik <[email protected]> wrote: > On Tue, Apr 28, 2015 at 06:02PM, Dmitriy Setrakyan wrote: > > I agree, the concern is valid. > > > > Ognen, Cos, what do you think should be the right behavior? Should we > allow > > different versions of the objects live in the same cache? GridGain > > Being able to have different versions of the objects might be a bliss (I'm > not > sure if that would fit Ognen usecase). But it might come with the funny > situations such as when an older revision never got purged off a cache, > causing potential data-conflicts, etc. To me peerClassLoading seems to > fine, > but users need to be aware about its effects. > > Just thinking out loud, really. > Cos > > > enterprise edition, by the way, allows it with Portable Objects. > > > > If you would like to clear the older object versions and deploy new ones > > automatically, Ignite supports it already. Just enable peerClassLoading > on > > Ignite configuration. > > > > D. > > > > On Tue, Apr 28, 2015 at 8:43 AM, Ognen Duzlevski < > [email protected]> > > wrote: > > > > > Cos, thanks. If anyone has any suggestions, I would be glad to hear > them > > > :-) > > > > > > On Tue, Apr 28, 2015 at 12:59 AM, Konstantin Boudnik <[email protected]> > > > wrote: > > > > > > > I think Ognen has raised a very valid concern in [1]: what to do > when you > > > > have > > > > a huge cluster? Esp. on multi-tenant systems you can not just bounce > the > > > > whole > > > > thing on every application's DO classes change. Is it possible to do > > > > rolling > > > > restart of the cluster nodes, where some of the nodes will still be > on > > > the > > > > old > > > > version of the classes and some on the new one? > > > > > > > > Sorry for using the nabble link, but > > > > mail-archives.apache.org/mod_mbox/ignite-dev takes forever to get > > > updated. > > > > > > > > Cos > > > > > > > > [1] > > > > > > > > http://apache-ignite-developers.2346864.n4.nabble.com/New-contributor-tp114p123.html > > > > > > > > On Mon, Apr 27, 2015 at 08:57AM, Dmitriy Setrakyan wrote: > > > > > Ognen, > > > > > > > > > > What kind of behavior do you need for the deployment? For example, > if > > > > your > > > > > caches already have data with older classes, what should happen to > that > > > > > data? > > > > > > > > > > Of course, the easiest way to accomplish what you are doing is to > copy > > > > the > > > > > new jars everywhere and restart the cluster. If this approach is > > > > > acceptable, I would just go with it. > > > > > > > > > > D. > > > > > > > > > > On Sun, Apr 26, 2015 at 7:29 PM, Ognen Duzlevski < > > > > [email protected]> > > > > > wrote: > > > > > > > > > > > I have a 5 machine ignite grid deployed on EC2 (still very much > in > > > > testing > > > > > > but would like to move to becoming more serious about using it in > > > > research > > > > > > at least and eventually in production). In order to be able to > cache > > > > > > various Scala/java classes, I created a fat jar of my Scala app > and > > > > put it > > > > > > in the ignite/libs/ subdirectory. Then I start ignite on each > node by > > > > > > running the ignite.sh script. > > > > > > > > > > > > When I add new classes, I recompile the app and create a new fat > jar. > > > > How > > > > > > does one deploy this new code so that the already running ignite > > > > becomes > > > > > > aware of it? I am not much of a Java programmer (jumped straight > to > > > > Scala) > > > > > > - are there any ways Java allows for loading new classes/jars > "on the > > > > fly" > > > > > > into running JVMs? If so, does Ignite support them? If not, what > do > > > > people > > > > > > do to deploy new jars so they can become usable to an already > running > > > > cache > > > > > > grid? > > > > > > > > > > > > Thanks! > > > > > > Ognen > > > > > > > > > > > > > >
