I like it. Alexey G, can you please chime in?
D. On Fri, Sep 22, 2017 at 11:33 AM, Vladimir Ozerov <voze...@gridgain.com> wrote: > Guys, > > Here is my proposal: > > 1) MemoryPolicyConfiguration is renamed to *DataRegionConfiguration*. > 2) PersistenceConfiguration is merged with MemoryConfiguration and renamed > to ... *DataStorageConfiguration*! It has: common memory settings (e.g. > default data region), persistence settings (e.g. WAL) and a list of > DataRegionConfiguration beans. > > What we have in the end: > > <property name="dataConfiguration"> > <bean class="o.a.i.DataConfiguration"> > <property name="pageSize" value="8192" /> > <property name="persistentStorePath" value="/my/path" /> > <property name="dataRegions"> > <list> > <bean class="o.a.i.DataRegionConfiguration"> > <property name="name" value="VOLATILE" /> > <property name="maxSize" value="1_000_000_000" /> > </bean> > <bean class="o.a.i.DataRegionConfiguration"> > <property name="name" value="PERSISTENT" /> > <property name="maxSize" value="1_000_000_000" /> > <property name="persistent" value="true" /> > </bean> > </list> > </property> > </bean> > </property> > > > Makes sense? > > Vladimir. > > > On Thu, Sep 21, 2017 at 7:04 AM, Dmitriy Setrakyan <dsetrak...@apache.org> > wrote: > > > 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() > > ); > > > > > > > > > >