Hi Sergey,

Thank you for bringing attention to that important subject!

My note here is about one more cluster mode. As far as I know
currently we already have 3 modes (inactive, read-only, read-write)
and the subject is about one more. From the first glance it could be
hard for a user to understand and use all modes properly. Do we really
need all spectrum? Could we simplify things somehow?

2020-08-27 15:59 GMT+03:00, Sergey Chugunov <sergey.chugu...@gmail.com>:
> Hello Nikolay,
>
> Created one, available by link [1]
>
> Initially there was an intention to develop it under IEP-47 [2] and there
> is even a separate section for Maintenance Mode there.
> But it looks like this feature is useful in more cases and deserves its own
> IEP.
>
> [1]
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-53%3A+Maintenance+Mode
> [2]
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-47:+Native+persistence+defragmentation
>
> On Thu, Aug 27, 2020 at 11:01 AM Nikolay Izhikov <nizhi...@apache.org>
> wrote:
>
>> Hello, Sergey!
>>
>> Thanks for the proposal.
>> Let’s have IEP for this feature.
>>
>> > 27 авг. 2020 г., в 10:25, Sergey Chugunov <sergey.chugu...@gmail.com>
>> написал(а):
>> >
>> > Hello Igniters,
>> >
>> > I want to start a discussion about new supporting feature that could be
>> > very useful in many scenarios where persistent storage is involved:
>> > Maintenance Mode.
>> >
>> > *Summary*
>> > Maintenance Mode (MM for short) is a special state of Ignite node when
>> node
>> > doesn't serve user requests nor joins the cluster but waits for user
>> > commands or performs automatic actions for maintenance purposes.
>> >
>> > *Motivation*
>> > There are situations when node cannot participate in regular operations
>> but
>> > at the same time should not be shut down.
>> >
>> > One example is a ticket [1] where I developed the first draft of
>> > Maintenance Mode.
>> > Here we get into a situation when node has potentially corrupted PDS
>> > thus
>> > cannot proceed with restore routine and join the cluster as usual.
>> > At the same time node should not fail nor be stopped for manual
>> > cleanup.
>> > Manual cleanup is not always an option (e.g. restricted access to file
>> > system); in managed environments failed node will be restarted
>> > automatically so user won't have time for performing necessary
>> operations.
>> > Thus node needs to function in a special mode allowing user to connect
>> > to
>> > it and perform necessary actions.
>> >
>> > Another example is described in IEP-47 [2] where defragmentation is
>> > being
>> > developed. Node defragmenting its PDS should not join the cluster until
>> the
>> > process is finished so it needs to enter Maintenance Mode as well.
>> >
>> > *Suggested design*
>> > I suggest MM to work as follows:
>> > 1. Node enters MM if special markers are found on disk. These markers
>> > called Maintenance Records could be created automatically (e.g. when
>> > storage component detects corrupted storage) or by user request (when
>> user
>> > requests defragmentation of some caches). So entering MM requires node
>> > restart.
>> > 2. Started in MM node doesn't join the cluster but finishes startup
>> routine
>> > so it is able to receive commands and provide metrics to the user.
>> > 3. When all necessary maintenance operations are finished, Maintenance
>> > Records for these operations are deleted from disk and node restarted
>> again
>> > to enter normal service.
>> >
>> > *Example*
>> > To put it into a context let's consider an example of how I see the MM
>> > workflow in case of PDS corruption.
>> >
>> >   1. Node has failed in the middle of checkpoint when WAL is disabled
>> > for
>> >   a particular cache -> data files of the cache are potentially
>> corrupted.
>> >   2. On next startup node detects this situation, creates Maintenance
>> >   Record on disk and shuts down.
>> >   3. On next startup node sees Maintenance Record, enters Maintenance
>> Mode
>> >   and waits for user to do specific actions: clean potentially
>> > corrupted
>> PDS.
>> >   4. When user has done necessary actions he/she removes Maintenance
>> >   Record using Maintenance Mode API exposed via control.{sh|bat} script
>> or
>> >   JMX.
>> >   5. On next startup node goes to normal operations as maintenance
>> > reason
>> >   is fixed.
>> >
>> >
>> > I prepared a PR [3] for ticket [1] with draft implementation. It is not
>> > ready to be merged to master branch but is already fully functional and
>> can
>> > be reviewed.
>> >
>> > Hope you'll share your feedback on the feature and/or any thoughts on
>> > implementation.
>> >
>> > Thank you!
>> >
>> > [1] https://issues.apache.org/jira/browse/IGNITE-13366
>> > [2]
>> >
>> https://cwiki.apache.org/confluence/display/IGNITE/IEP-47:+Native+persistence+defragmentation
>> > [3] https://github.com/apache/ignite/pull/8189
>>
>>
>


-- 

Best regards,
Ivan Pavlukhin

Reply via email to