Hello, Why do we need «immediate»? Is there real-world scenarios for it?
Can we do graceful or «save all possible data» shutdown always? > 18 окт. 2022 г., в 10:59, Aleksandr Polovtsev <alexpolovt...@gmail.com> > написал(а): > > Hello, dear Igniters! > > I'd like to propose a refactoring of the current Shutdown Policy mechanism. > Currently, node shutdown is controlled by a bunch of flags and enums (I may > be missing some of them): > > 1. ShutdownPolicy enum has only two entries and is basically a flag that > dictates if we need to wait for the data to be backed up, so that we will > not lose any data when the node goes offline. > 2. "cancel" flag is passed to the stop method and indicates that all long > running jobs should be interrupted. For example, it prevents the node > performing a checkpoint on shutdown. I'm pretty sure this flag is nearly > always set to "true", because it is used by the Shutdown Hook. > 3. There are also a bunch of system properties that affect the shutdown: > * IGNITE_PDS_SKIP_CHECKPOINT_ON_NODE_STOP - disables checkpoints on > node stop, which heavily correlates with the "cancel" flag. > * IGNITE_WAIT_FOR_BACKUPS_ON_SHUTDOWN - deprecated and duplicates the > ShutdownPolicy enum > * IGNITE_NO_SHUTDOWN_HOOK - disables the shutdown hook. I don't know if > it is really useful. > > I think that this approach is counter intuitive and would like to > incorporate all aforementioned flags into the ShutdownPolicy enum. For > example, it can look as follows: > > public enum ShutdownPolicy { > IMMEDIATE // Stops the node and cancels all running jobs > GRACEFUL // Stops the node, does not cancel running jobs and waits for > backups > GRACEFUL_NO_BACKUPS // Stops the node, does not cancel running jobs, > does not wait for backups > } > > After that, the "cancel" flag and all corresponding properties can be > removed (apart from the IGNITE_NO_SHUTDOWN_HOOK, if it is still needed). > > Does this make sense? What do you think? > > -- > With regards, > Aleksandr Polovtsev