Vladimir, Igniters,

Let's emphasize our final plan.

We are going to add --force flags that will be necessary to pass for a
deactivation if there are in-memory caches to:
1) Rest API (already implemented in [1])
2) Command line utility (already implemented in [1])
3) JMX bean (going to be implemented in [2])
We are *not* going to change IgniteCluster or any other thick Java API,
thus we are *not* going to merge [3].
We plan to *fully rollback* [1] and [2] once cache data survival after
activation-deactivation cycle will be implemented.

Is it correct? If we are on the same page, let's proceed this way.
I propose to:
- Create a JIRA issue for in-memory-data-safe deactivation (possibly,
without IEP and detailed design so far)
- Describe in the issue description what exact parts of API should be
removed under the issue scope.

Also, a few questions on already merged [1]:
- We have removed GridClientClusterState#state(ClusterState) from Java
client API. Is it a legitimate thing to do? Don't we have to support API
compatibility for thin clients as well?
- In many places in the code I can see the following javadoc

>  @param forceDeactivation If {@code true}, cluster deactivation will be 
> forced.
>
> As for me, this javadoc doesn't clarify anything. I'd suggest to describe
in which cases deactivation won't happen unless it's forced and which
impact forced deactivation will bring on the system.

[1]: https://issues.apache.org/jira/browse/IGNITE-12701
[2]: https://issues.apache.org/jira/browse/IGNITE-12779
[3]: https://issues.apache.org/jira/browse/IGNITE-12614

--
Ivan

On Tue, Mar 24, 2020 at 7:18 PM Vladimir Steshin <vlads...@gmail.com> wrote:

> Hi, Igniters.
>
> I'd like to remind you that cluster can be deactivated by user with 3
> utilities: control.sh, *JMX and the REST*. Proposed in [1] solution is
> not about control.sh. It suggests same approach regardless of the
> utility user executes. The task touches *only* *API of the user calls*,
> not the internal APIs.
>
> The reasons why flag “--yes” and confirmation prompt hasn’t taken into
> account for control.sh are:
>
> -Various commands widely use “--yes” just to start. Even not dangerous
> ones require “--yes” to begin. “--force” is dedicated for *harmless
> actions*.
>
> -Checking of probable data erasure works after command start and
> “--force” may not be required at all.
>
> -There are also JMX and REST. They have no “—yes” but should work alike.
>
>      To get the deactivation safe I propose to merge last ticket with
> the JMX fixes [2]. In future releases, I believe, we should estimate
> jobs and fix memory erasure in general. For now, let’s prevent it. WDYT?
>
>
> [1] https://issues.apache.org/jira/browse/IGNITE-12614
>
> [2] https://issues.apache.org/jira/browse/IGNITE-12779
>
>
> 24.03.2020 15:55, Вячеслав Коптилин пишет:
> > Hello Nikolay,
> >
> > I am talking about the interactive mode of the control utility, which
> > requires explicit confirmation from the user.
> > Please take a look at DeactivateCommand#prepareConfirmation and its
> usages.
> > It seems to me, this mode has the same aim as the forceDeactivation flag.
> > We can change the message returned by
> DeactivateCommand#confirmationPrompt
> > as follows:
> >      "Warning: the command will deactivate the cluster nnn and clear
> > in-memory caches (without persistence) including system caches."
> >
> > What do you think?
> >
> > Thanks,
> > S.
> >
> > вт, 24 мар. 2020 г. в 13:07, Nikolay Izhikov <nizhi...@apache.org>:
> >
> >> Hello, Slava.
> >>
> >> Are you talking about this commit [1] (sorry for commit message it’s due
> >> to the Github issue)?
> >>
> >> The message for this command for now
> >>
> >> «Deactivation stopped. Deactivation clears in-memory caches (without
> >> persistence) including the system caches.»
> >>
> >> Is it clear enough?
> >>
> >> [1]
> >>
> https://github.com/apache/ignite/commit/4921fcf1fecbd8a1ab02099e09cc2adb0b3ff88a
> >>
> >>
> >>> 24 марта 2020 г., в 13:02, Вячеслав Коптилин <slava.kopti...@gmail.com
> >
> >> написал(а):
> >>> Hi Nikolay,
> >>>
> >>>> 1. We should add —force flag to the command.sh deactivation command.
> >>> I just checked and it seems that the deactivation command
> >>> (control-utility.sh) already has a confirmation option.
> >>> Perhaps, we need to clearly state the consequences of using this
> command
> >>> with in-memory caches.
> >>>
> >>> Thanks,
> >>> S.
> >>>
> >>> вт, 24 мар. 2020 г. в 12:51, Nikolay Izhikov <nizhi...@apache.org>:
> >>>
> >>>> Hello, Alexey.
> >>>>
> >>>> I just repeat our agreement to be on the same page
> >>>>
> >>>>> The confirmation should only present in the user-facing interfaces.
> >>>> 1. We should add —force flag to the command.sh deactivation command.
> >>>> 2. We should throw the exception if cluster has in-memory caches and
> >>>> —force=false.
> >>>> 3. We shouldn’t change Java API for deactivation.
> >>>>
> >>>> Is it correct?
> >>>>
> >>>>> The DROP TABLE command does not have a "yes I am sure" clause in it
> >>>> I think it because the command itself has a «DROP» word in it’s name.
> >>>> Which clearly explains what will happen on it’s execution.
> >>>>
> >>>> On the opposite «deactivation» command doesn’t have any sign of
> >>>> destructive operation.
> >>>> That’s why we should warn user about it’s consequences.
> >>>>
> >>>>
> >>>>> 24 марта 2020 г., в 12:38, Alexey Goncharuk <
> >> alexey.goncha...@gmail.com>
> >>>> написал(а):
> >>>>> Igniters, Ivan, Nikolay,
> >>>>>
> >>>>> I am strongly against adding confirmation flags to any kind of APIs,
> >>>>> whether we change the deactivation behavior or not (even though I
> agree
> >>>>> that it makes sense to fix the deactivation to not clean up the
> >> in-memory
> >>>>> data). The confirmation should only present in the user-facing
> >>>> interfaces.
> >>>>> I cannot recall any software interface which has such a flag. None of
> >> the
> >>>>> syscalls which delete files (a very destructive operation) have this
> >>>> flag.
> >>>>> The DROP TABLE command does not have a "yes I am sure" clause in it.
> >> As I
> >>>>> already mentioned, when used programmatically, most users will likely
> >>>>> simply pass 'true' as the new flag because they already know the
> >>>> behavior.
> >>>>> This is a clear sign of a bad design choice.
> >>>>>
> >>>>> On top of that, given that it is our intention to change the behavior
> >> of
> >>>>> deactivation to not loose the in-memory data, it does not make sense
> to
> >>>> me
> >>>>> to change the API.
> >>>>
> >>
>

Reply via email to