Thank you all for replies. I like idea to replace 'crashed' to 'stop'. 'crashed' word is really confusing.
But still, if I call close () on file, all data is flushed to disk. But for ignite.close () checkpoint may be not finished. May be we should implement Vladimir's suggestion to flush the pages without respect to the cancel flag? Are there any thoughts on this? пт, 4 авг. 2017 г. в 11:12, Vladimir Ozerov <voze...@gridgain.com>: > Ivan, > > Hanging on Ignite.close() will confuse user no more than restore on start > after graceful shutdown. IMO correct approach here would be to: > 1) wait for checkpoint completion irrespective of "cancel" flag, because > this flag relates to compute jobs only as per documentation > 2) print an INFO message to the log that we are saving a checkpoint due to > node stop. > > On Fri, Aug 4, 2017 at 10:54 AM, Ivan Rakov <ivan.glu...@gmail.com> wrote: > > > Dmitriy, > > > > From my point of view, invoking stop(true) is correct behaviour. > > > > Stopping node in the middle of checkpoint is absolutely valid case. > That's > > how persistence works - node will restore memory state if stopped at any > > moment. > > On the other hand, checkpoint may last for a long time. Thread hanging on > > Ignite.close() may confuse user much more than "crashed in the middle of > > checkpoint" message. > > > > Best Regards, > > Ivan Rakov > > > > > > On 03.08.2017 22:34, Dmitry Pavlov wrote: > > > >> Hi Igniters, > >> > >> I’ve created the simplest example using Ignite 2.1 and persistence (see > >> the > >> code below). I've included Ignite instance into try-with-resources (I > >> think > >> it is default approach for AutoCloseable inheritors). > >> > >> But next time when I started this server I got message: “Ignite node > >> crashed in the middle of checkpoint. Will restore memory state and > enforce > >> checkpoint on node start.” > >> > >> This happens because in close() method we don’t wait checkpoint to end. > I > >> am afraid this behaviour may confuse users on the first use of the > >> product. > >> > >> What do you think if we change Ignite.close() functioning from > stop(true) > >> to stop(false)? This will allow to wait checkpoints to finish by > default. > >> > >> Alternatively, we may improve example to show how to shutdown server > node > >> correctly. Current PersistentStoreExample does not cover server node > >> shutdown. > >> > >> Any concerns on close() method change? > >> > >> Sincerely, > >> Dmitriy Pavlov > >> > >> > >> IgniteConfiguration cfg = new IgniteConfiguration(); > >> cfg.setPersistentStoreConfiguration(new PersistentStoreConfiguration()); > >> > >> try (Ignite ignite = Ignition.start(cfg)){ > >> ignite.active(true); > >> IgniteCache<String, String> cache = ignite.getOrCreateCache("test"); > >> > >> for (int i = 0; i < 1000; i++) > >> cache.put("Key" + i, "Value" + i); > >> } > >> > >> > > >