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()); >