Hello, Vladimir. I think we should do the following:
* Update Ignite documentation and write down the fact that in-memory cache cleared on deactivation. * Disallow, by default, deactivation of the cluster that has in-memory cache with proper error message «Your cluster has in-memory cache configured. During deactivation all data from these caches will be cleared!» * Add «—force» flag to deactivate command so administrator can force deactivation for cluster that has both - persistent and in-memory caches configured. Changes in the source code should include: 1. JMX beans - IgniteMXBean. 2. Java API - Ignite#active and Ignite#cluster#state - because active method have the same implementation as `IgniteMBBean#active` 3. CLI utility - control.sh Igniters, what do you think? > 13 февр. 2020 г., в 14:19, Vladimir Steshin <vlads...@gmail.com> написал(а): > > Hello, everyone. > > > > I’d like to propose to make behavior of cluster deactivation the same > independently on usage type: in code or manually with control.sh or JMX. > Let’s put it in one place like IgniteCluster#state(ClusterState newState, > boolean force) and require forced call for in-memory data. > > While I was doing the ticket I realized that the suggested previously > solution cannot be complete. To prevent data loss via JMX I would need to > stop executing IgniteMXBean#active(false). But this causes stopping of > Ignite#active(false) too. The problem relies in single implementation for > both interfaces in IgniteKernal#active(boolean). It has to act differently > depending on where it is called from: JMX/CLI or code. > > > > Any thoughts? > > чт, 30 янв. 2020 г. в 13:08, Alexey Goncharuk <alexey.goncha...@gmail.com>: > >> I agree on CLI and JMX because those interfaces can be used by a system >> administrator and can be invoked by mistake. >> >> As for the Java API, personally, I find it strange to add 'force' or >> 'confirm' flags to it because it is very unlikely that such an invocation >> is done by mistake. Such mistakes are caught during the testing phase and >> developers will end up hard-coding 'true' as a flag anyways. >>