Denis, why do you need to access an instance of the default region bean? If you want to set any parameter, just instantiate new bean with this parameter set (like in XML snipped below). Other parameters will be automatically initialized with their default values.

Best Regards,
Ivan Rakov

On 02.10.2017 19:28, Denis Magda wrote:
      <property name="dataStorageConfiguration">
          <bean 
class="org.apache.ignite.configuration.DataStorageConfiguration">
              <property name="systemCacheInitialSize" value="#{100 * 1024 * 
1024}"/>
              <property name="defaultRegionConfiguration">
                  <bean 
class="org.apache.ignite.configuration.DataRegionConfiguration">
                      <property name="maxSize" value="#{5 * 1024 * 102 * 
1024}"/>
                  </bean>
              </property>
          </bean>
      </property>
In other data regions persistence will be disabled by default.
Ivan, how to get an instance to the default region bean and change a parameter? 
Obviously, if the goal is to enable the persistence I don’t want to create the 
default region bean from scratch.

—
Denis

On Oct 2, 2017, at 9:11 AM, Ivan Rakov <ivan.glu...@gmail.com> wrote:

Agree with Alexey.

Properties like *defaultDataRegionSize*, *isDefaultPersistenceEnabled* can 
confuse users who don't know that there's such thing as default data region. 
They can decide they are inherited by all data regions where size and 
persistence flag are not explicitly set.

Let's get rid of these properties and add *defaultRegionConfiguration* property 
with explicit configuration of default data region.

Regarding XML configuration, changing size or persistence flag of default data 
region will be just two lines longer (for bean description):

      <property name="dataStorageConfiguration">
          <bean 
class="org.apache.ignite.configuration.DataStorageConfiguration">
              <property name="systemCacheInitialSize" value="#{100 * 1024 * 
1024}"/>
              <property name="defaultRegionConfiguration">
                  <bean 
class="org.apache.ignite.configuration.DataRegionConfiguration">
                      <property name="maxSize" value="#{5 * 1024 * 102 * 
1024}"/>
                  </bean>
              </property>
          </bean>
      </property>
In other data regions persistence will be disabled by default.
I've updated draft in https://issues.apache.org/jira/browse/IGNITE-6030 with 
these changes.

Best Regards,
Ivan Rakov

On 02.10.2017 18:35, Denis Magda wrote:
To resolve this, I suggest to
introduce just another field defaultRegionConfiguration and get rid of
other defaults in DataStorageConfiguration.
Won’t it complicate the configuration from a Spring XML file? I’m not an expert 
in Spring so how do I get defaultRegionConfiguration bean first to change any 
parameter?

—
Denis

On Oct 2, 2017, at 8:30 AM, Alexey Goncharuk <alexey.goncha...@gmail.com> wrote:

Agree with Vladimir. If we are to implement this, we would either need to
have a Boolean (non-primitive) for persistenceEnabled on
DataRegionConfiguration, or introduce an enum for this field which is also
an overkill. On the other hand, one can assume that the defaults we are
talking about are actually inherited. To resolve this, I suggest to
introduce just another field defaultRegionConfiguration and get rid of
other defaults in DataStorageConfiguration.

Thoughts?

2017-10-02 15:19 GMT+03:00 Ivan Rakov <ivan.glu...@gmail.com>:

Vladimir,

I like your approach because it's easier to implement.

However, user may be confused by setting *isDefaultPersistenceEnabled*
flag and seeing that persistence is not enabled by default in custom memory
region. I'll add clarifying Javadoc at this place.

Best Regards,
Ivan Rakov


On 02.10.2017 11:28, Vladimir Ozerov wrote:

Ivan,

I do not think this is correct approach, because it will be hard to
explain, and you will have to use "Boolean" instead of "boolean" for
DataRegionConfiguration. I do not think we need default "persistence
enabled" for all regions. Instead, we should have "persistence enabled"
flag for default region only. It should not be propagated to custom
regions.

On Mon, Oct 2, 2017 at 11:14 AM, Ivan Rakov <ivan.glu...@gmail.com>
wrote:

Guys, I think I got the point now.
Let's check the final design:

*DataStorageConfiguration* will have *isDefaultPersistenceEnabled*
property (default = false), which will be used for enabling persistence
in
default data region.
*DataRegionConfiguration* will have *isPersistenceEnabled* property,
which
will be used for enabling persistence in corresponding data region. If
value is not set, value of *DataStorageConfiguration::isD
efaultPersistenceEnabled*
will be used by default.

Best Regards,
Ivan Rakov



On 02.10.2017 7:49, Dmitriy Setrakyan wrote:

On Mon, Oct 2, 2017 at 7:46 AM, Denis Magda <dma...@apache.org> wrote:
On Oct 1, 2017, at 4:41 AM, Ivan Rakov <ivan.glu...@gmail.com> wrote:

1) You're right. I forgot to include the main flag in
DataRegionConfiguration - *isPersistenceEnabled*. Persistence will be
enabled globally if at least one memory region has this flag set.

I’m confused. Why the persistence should be enabled *globally* if the
purpose is to have it set for a specific region? If it’s enabled for
region
A only, I don’t want to have it activated for region B.

Yes, you are right. By default the persistence will be disabled
globally.

But we should also give users a way to switch the default behavior from
in-memory only (no-persistence) to persistence.




Reply via email to