Firstly all, why not call it DataPolicy instead of MemoryPolicy? Secondly, why not set data policies directly on IgniteConfiguration. And lastly, how about we combine memory and disk properties in one bean with clear naming convention?
Here is the example. Note that all properties above must start with with "Memory" or "Disk". *IgniteConfiguration cfg = new IgniteConfiguration();* > > > > > *cfg.setDataPolicies( new DataPolicyConfiguration() > .setName("bla"), .setMemoryMaxSize(1024), // must be greater than 0, > since memory always needs to be enabled. .setDiskMaxSize(0), // if > greater than 0, then persistence is enabled. );* I think this approach is much more concise and straight forward. What do you think? D. On Wed, Sep 20, 2017 at 4:55 AM, Vladimir Ozerov <voze...@gridgain.com> wrote: > I prefer the second. Composition over inheritance - this is how all our > configuration is crafted. > > E.g. we do not have "CacheConfiguration" and " > StoreEnabledCacheConfiguration". > Instead, we have "CacheConfiguration.setCacheStoreFactory". > > On Wed, Sep 20, 2017 at 2:46 PM, Alexey Goncharuk < > alexey.goncha...@gmail.com> wrote: > > > Reiterating this based on some feedback from PDS users. > > > > It might be confusing to configure persistence with "MemoryPolicy", so > > another approach is to deprecate the old names and introduce a new name > > "DataRegion" because it reflects the actual state when data is stored on > > disk and partially in memory. I have two options in mind, each of them > > looks acceptable to me, so I would like to have some feedback from the > > community. Old configuration names will be deprecated (but still be taken > > if used for backward compatibility). Note, that old names deprecation > > handles default configuration compatibility very nicely - current PDS > users > > will not need to change anything to keep everything working. The two > > options I mentioned are below: > > > > * we have two separate classes for in-memory and persisted data regions, > > so the configuration would look like so: > > > > IgniteConfiguration cfg = new IgniteConfiguration(); > > > > cfg.setDataRegionsConfiguration(new DataRegionsConfiguration() > > .setDataRegions( > > new MemoryDataRegion() > > .setName("volatileCaches") > > .setMaxMemorySize(...), > > new PersistentDataRegion() > > .setName("persistentCaches") > > .setMaxMemorySize(...) > > .setMaxDiskSize())); > > > > cfg.setPersistentStoreConfiguration(new PersistentStoreConfiguration()); > > > > > > * we have one class for data region configuration, but it will have a > > sub-bean for persistence configuration: > > > > IgniteConfiguration cfg = new IgniteConfiguration(); > > > > cfg.setDataRegionsConfiguration(new DataRegionsConfiguration() > > .setDataRegions( > > new DataRegion() > > .setName("volatileCaches") > > .setMaxMemorySize(...), > > new DataRegion() > > .setName("persistentCaches") > > .setMaxMemorySize(...), > > .setPersistenceConfiguration( > > new DataRegionPersistenceConfiguration() > > .setMaxDiskSize(...)))); > > > > cfg.setPersistentStoreConfiguration(new PersistentStoreConfiguration()); > > >