Alex,

I would say that we've already had this behavior for years - marshaller
cache. I think it is time to agree that "in-memory" != stateless. Instead
"in-memory" means "data is not stored on disk".
May be we can have a flag which will wipe out all metadata on node restart
(e.g. it could make sense for embedded clients)?

On Fri, Apr 13, 2018 at 12:48 PM, Alexey Goncharuk <
alexey.goncha...@gmail.com> wrote:

> Denis,
>
> This is a subtle question. It looks like we have now a number of use-cases
> when persistent storage is required even for a pure in-memory mode. One of
> the use-cases is thin client authentication, the other is service grid
> configuration persistence.
>
> Generally, I would agree that this is an expected behavior. However, this
> means that a user cannot simply start and stop nodes randomly anymore.
> Ignite start will require some sort of installation or work folder
> initialization (sort of initdb in postgres) which is ok for
> persistence-enabled modes, but I am not sure if this is expected for
> in-memory. Of course, we can run this initialization automatically, but it
> is not always a good idea.
>
> If we are ok to have this restrictions for in-memory mode, then service
> persistence makes sense.
>
> --AG
>
> 2018-04-11 22:36 GMT+03:00 Denis Magda <dma...@apache.org>:
>
>> Denis,
>>
>> I think that the service deployment state needs be persisted cluster-wide.
>> I guess that our meta-store is capable of doing so. Alex G., Vladimir,
>> could you confirm?
>>
>> As for the split-brain scenarios, I would put them aside for now because,
>> anyway, they have to be solved at lower levels (meta store, discovery,
>> etc.).
>>
>> Also, I heard that presently we store a service configuration in the
>> system
>> cache that doesn't give us a way to deploy a new version of a service
>> without undeployment of the previous one. Will this issue be addressed by
>> the new deployment approach?
>>
>> --
>> Denis
>>
>> On Wed, Apr 11, 2018 at 1:28 AM, Denis Mekhanikov <dmekhani...@gmail.com>
>> wrote:
>>
>> > Denis,
>> >
>> > Sounds reasonable. It's not clear, though, what should happen, if a
>> joining
>> > node has some services persisted, that are missing on other nodes.
>> > Should we deploy them?
>> > If we do so, it could lead to surprising behaviour. For example you
>> could
>> > kill a node, undeploy a service, then bring back an old node, and it
>> would
>> > make the service resurrect.
>> > We could store some deployment counter along with the service
>> > configurations on all nodes, that would show how many times the service
>> > state has changed, i.e. it has been undeployed/redeployed. It should be
>> > kept for undeployed services as well to avoid situations like I
>> described.
>> >
>> > But it still leaves a possibility of incorrect behaviour, if there was a
>> > split-brain situation at some point. I don't think we should precess it
>> > somehow, though. If we choose to tackle it, it will overcomplicate
>> things
>> > for a sake of a minor improvement.
>> >
>> > Denis
>> >
>> > вт, 10 апр. 2018 г. в 0:55, Valentin Kulichenko <
>> > valentin.kuliche...@gmail.com>:
>> >
>> > > I was responding to another Denis :) Agree with you on your point
>> though.
>> > >
>> > > -Val
>> > >
>> > > On Mon, Apr 9, 2018 at 2:48 PM, Denis Magda <dma...@apache.org>
>> wrote:
>> > >
>> > > > Val,
>> > > >
>> > > > Guess we're talking about other situations. I'm bringing up the case
>> > > when a
>> > > > service was deployed dynamically and has to be brought up after a
>> full
>> > > > cluster restart w/o user intervention. To achieve this we need to
>> > persist
>> > > > the service's configuration somewhere.
>> > > >
>> > > > --
>> > > > Denis
>> > > >
>> > > > On Mon, Apr 9, 2018 at 1:42 PM, Valentin Kulichenko <
>> > > > valentin.kuliche...@gmail.com> wrote:
>> > > >
>> > > > > Denis,
>> > > > >
>> > > > > EVT_CLASS_DEPLOYED should be fired every time a class is deployed
>> or
>> > > > > redeployed. If this doesn't happen in some cases, I believe this
>> > would
>> > > > be a
>> > > > > bug. I don't think we need to add any new events.
>> > > > >
>> > > > > -Val
>> > > > >
>> > > > > On Mon, Apr 9, 2018 at 10:50 AM, Denis Magda <dma...@apache.org>
>> > > wrote:
>> > > > >
>> > > > > > Denis,
>> > > > > >
>> > > > > > I would encourage us to persist a service configuration in the
>> meta
>> > > > store
>> > > > > > and have this capability enabled by default. That's essential
>> for
>> > > > > services
>> > > > > > started dynamically. Moreover, we support similar behavior for
>> > > caches,
>> > > > > > indexes, and other DDL changes happened at runtime.
>> > > > > >
>> > > > > > --
>> > > > > > Denis
>> > > > > >
>> > > > > > On Mon, Apr 9, 2018 at 9:34 AM, Denis Mekhanikov <
>> > > > dmekhani...@gmail.com>
>> > > > > > wrote:
>> > > > > >
>> > > > > > > Another question, that I would like to discuss is whether
>> > services
>> > > > > should
>> > > > > > > be preserved on cluster restarts.
>> > > > > > >
>> > > > > > > Currently it depends on persistence configuration. If
>> persistence
>> > > for
>> > > > > any
>> > > > > > > data region is enabled, then services will be persisted as
>> well.
>> > > This
>> > > > > is
>> > > > > > a
>> > > > > > > pretty strange way of configuring this behaviour.
>> > > > > > > I'm not sure, if anybody relies on this functionality right
>> now.
>> > > > Should
>> > > > > > we
>> > > > > > > support it at all? If yes, should we make it configurable?
>> > > > > > >
>> > > > > > > Denis
>> > > > > > >
>> > > > > > > пн, 9 апр. 2018 г. в 19:27, Denis Mekhanikov <
>> > > dmekhani...@gmail.com
>> > > > >:
>> > > > > > >
>> > > > > > > > Val,
>> > > > > > > >
>> > > > > > > > Sounds reasonable. I just think, that user should have some
>> way
>> > > to
>> > > > > > know,
>> > > > > > > > that new version of a service class was deployed.
>> > > > > > > > One way to do it is to listen to *EVT_CLASS_DEPLOYED. *I'm
>> not
>> > > > sure,
>> > > > > > > > whether it is triggered on class redeployment, though. If
>> not,
>> > > then
>> > > > > > > another
>> > > > > > > > event type should be added.
>> > > > > > > >
>> > > > > > > > I don't think, that a lot of people will implement their own
>> > > > > > > > *DeploymentSpi*-s, so we should make work with
>> > *UriDeploymentSpi*
>> > > > as
>> > > > > > > > comfortable as possible.
>> > > > > > > >
>> > > > > > > > Denis
>> > > > > > > >
>> > > > > > > > пт, 6 апр. 2018 г. в 23:40, Valentin Kulichenko <
>> > > > > > > > valentin.kuliche...@gmail.com>:
>> > > > > > > >
>> > > > > > > >> Yes, the class deployment itself has to be explicit. I.e.,
>> > there
>> > > > has
>> > > > > > to
>> > > > > > > be
>> > > > > > > >> a manual step where user updates the class, and the exact
>> step
>> > > > > > required
>> > > > > > > >> would depend on DeploymentSpi implementation. But then
>> Ignite
>> > > > takes
>> > > > > > care
>> > > > > > > >> of
>> > > > > > > >> everything else - service redeployment and restart is
>> > automatic.
>> > > > > > > >>
>> > > > > > > >> Dmitriy Pavlov, all this is going to be disabled if
>> > > DeploymentSpi
>> > > > is
>> > > > > > not
>> > > > > > > >> configured. In this case service class definitions have to
>> be
>> > > > > deployed
>> > > > > > > on
>> > > > > > > >> local classpath and can't be updated in runtime. Just like
>> it
>> > > > works
>> > > > > > > right
>> > > > > > > >> now.
>> > > > > > > >>
>> > > > > > > >> -Val
>> > > > > > > >>
>> > > > > > > >> On Fri, Apr 6, 2018 at 10:20 AM, Dmitriy Setrakyan <
>> > > > > > > dsetrak...@apache.org
>> > > > > > > >> >
>> > > > > > > >> wrote:
>> > > > > > > >>
>> > > > > > > >> > On Fri, Apr 6, 2018 at 9:13 AM, Dmitry Pavlov <
>> > > > > > dpavlov....@gmail.com>
>> > > > > > > >> > wrote:
>> > > > > > > >> >
>> > > > > > > >> > > Hi Igniters,
>> > > > > > > >> > >
>> > > > > > > >> > > I like automatic redeploy which can be disabled by
>> config
>> > if
>> > > > > user
>> > > > > > > >> wants
>> > > > > > > >> > to
>> > > > > > > >> > > control this process. What do you think?
>> > > > > > > >> > >
>> > > > > > > >> >
>> > > > > > > >> > I do not think we should have anything automatic when it
>> > comes
>> > > > to
>> > > > > > > >> > deployment, everything should be explicit. However, if we
>> > use
>> > > > the
>> > > > > > > >> > deployment SPI, then a user should be able to do "hot"
>> > > redeploy,
>> > > > > > > where a
>> > > > > > > >> > new service will be deployed if the user drops an updated
>> > jar.
>> > > > > > > >> >
>> > > > > > > >> > We should not create anything new here. Ignite already
>> has a
>> > > > > > > deployment
>> > > > > > > >> SPI
>> > > > > > > >> > and it already works in a certain way. Let's not change
>> it.
>> > > > > > > >> >
>> > > > > > > >> > D.
>> > > > > > > >> >
>> > > > > > > >>
>> > > > > > > >
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>
>

Reply via email to