If we’re taking the consolidation path for Memory and Persistence configurations then it makes sense to merge MemoryMetrics [1] and PersistenceMetrics [2] plus their JMX beans.
Agree? [1] https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/MemoryMetrics.html <https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/MemoryMetrics.html> [2] https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/PersistenceMetrics.html — Denis > On Sep 22, 2017, at 10:18 PM, Dmitriy Setrakyan <dsetrak...@apache.org> wrote: > > 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() >>> ); >>>>> >>>> >>> >>