Yeah, that's a very good point. However, the problem here is that we use single cache for very different structures. For atomics, for example, partitioned cache makes sense (usually with 1 or more backups though). While reentrant locks should always be in replicated cache in my view (or at least by default). Currently it's one or another for both.
-Val On Thu, Apr 20, 2017 at 2:37 PM, Vladimir Ozerov <voze...@gridgain.com> wrote: > Evgeniy, > > Good catch! I personally had to explain users several time why they loose > data in these cases with default configuration. > "AtomicConfiguration.backups > = 0" and "CollectionConfiguration.backups = 0" as defaults is nonsense. > > On Thu, Apr 20, 2017 at 3:27 PM, Evgeniy Stanilovskiy < > estanilovs...@gridgain.com> wrote: > > > Guys, hope i can add one more example here. > > Ones we use IgniteAtomicSequence, after topology changes some assertions > > can be catched due to default AtomicConfiguration > > i.e. > > public static final int DFLT_BACKUPS = 0; > > public static final CacheMode DFLT_CACHE_MODE = PARTITIONED; > > > > minimal improvements here would be to set DFLT_BACKUPS = 1; or change > into > > REPLICATED mode. > > > > thanks. > > > > Folks, > >> > >> I received a number of complaints from users that our default setting > >> favor > >> performance at the cost of correctness and subtle behavior. Yesterday I > >> faced one such situation on my own. > >> > >> I started REPLICATED cache on several nodes, put some data, executed > >> simple > >> SQL and got wrong result. No errors, no warnings. The problem was caused > >> by > >> default PRIMARY_SYNC mode. WTF, our cache doesn't work out of the box! > >> > >> Another widely known examples are data streamer behavior, "read form > >> backups" + continuous queries. > >> > >> I propose to change our defaults to favor *correctness* over > performance, > >> and create good documentation and JavaDocs to explain users how to tune > >> our > >> product. Proposed changes: > >> > >> 1) FULL_SYNC as default; > >> 2) "readFromBackups=false" as default; > >> 3) "IgniteDataStreamer.allowOverwrite=true" as default. > >> > >> Users should not think how to make Ignite work correctly. It should be > >> correct out of the box. > >> > >> Vladimir. > >> > > >