Hi We need to have ability to calling shutdown with various guaranties. For example: Need to reboot a node, but after that node should be available for historical rebalance (all partitions in MOVING state should have gone to OWNING).
Implemented a circled reboot of cluster, but all data should be available on that time (at least one copy of partition should be available in cluster). Need to wait not only data available, but all jobs (before this behavior available through a stop(false) method invocation). All these reason required various behavior before shutting down node. I propose slightly modify public API and add here method which shown on shutdown behavior directly: Ignite.close(Shutdown) <i>public enum Shutdownn { /** * Stop immediately as soon components are ready. */ IMMEDIATE, /** * Stop node when all partitions completed moving from/to this node to another. */ NORMAL, /** * Node will stop if and only if it does not store any unique partitions, that does not have copies on cluster. */ GRACEFUL, /** * Node stops graceful and wait all jobs before shutdown. */ ALL }</i> Method close without parameter Ignite.close() will get shutdown behavior configured for cluster wide. It will be implemented through distributed meta storage and additional utilities for configuration. Also, will be added a method to configure shutdown on start, this is look as IgniteConfiguration.setShutdown(Shutdown). If shutting down did not configure all be worked as before according to IMMEDIATE behavior. All other close method will be marked as deprecated. I will be waiting for your opinions. -- Vladislav Pyatkov