Repository: ignite Updated Branches: refs/heads/master 0134f2b44 -> 4f157f654
IGNITE-6746 Persist system cache when persistent data regions are present Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4f157f65 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4f157f65 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4f157f65 Branch: refs/heads/master Commit: 4f157f6545122a4b238edd85bdaa1eeea9a6a88a Parents: 0134f2b Author: Alexey Goncharuk <[email protected]> Authored: Mon Oct 30 18:31:59 2017 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Mon Oct 30 18:31:59 2017 +0300 ---------------------------------------------------------------------- .../processors/cache/GridCacheUtils.java | 14 ++++++++--- .../IgniteCacheDatabaseSharedManager.java | 26 ++++++++++++-------- 2 files changed, 27 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4f157f65/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java index 26e2254..1f289d0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java @@ -1701,14 +1701,22 @@ public class GridCacheUtils { return false; } + /** * @return {@code true} if persistence is enabled for at least one data region, {@code false} if not. */ public static boolean isPersistenceEnabled(IgniteConfiguration cfg) { - if (cfg.getDataStorageConfiguration() == null) + return isPersistenceEnabled(cfg.getDataStorageConfiguration()); + } + + /** + * @return {@code true} if persistence is enabled for at least one data region, {@code false} if not. + */ + public static boolean isPersistenceEnabled(DataStorageConfiguration cfg) { + if (cfg == null) return false; - DataRegionConfiguration dfltReg = cfg.getDataStorageConfiguration().getDefaultDataRegionConfiguration(); + DataRegionConfiguration dfltReg = cfg.getDefaultDataRegionConfiguration(); if (dfltReg == null) return false; @@ -1716,7 +1724,7 @@ public class GridCacheUtils { if (dfltReg.isPersistenceEnabled()) return true; - DataRegionConfiguration[] regCfgs = cfg.getDataStorageConfiguration().getDataRegionConfigurations(); + DataRegionConfiguration[] regCfgs = cfg.getDataRegionConfigurations(); if (regCfgs == null) return false; http://git-wip-us.apache.org/repos/asf/ignite/blob/4f157f65/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java index 933c195..f00edbe 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/IgniteCacheDatabaseSharedManager.java @@ -57,6 +57,7 @@ import org.apache.ignite.internal.processors.cache.persistence.tree.reuse.ReuseL import org.apache.ignite.internal.processors.cluster.IgniteChangeGlobalStateSupport; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.T2; +import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.internal.util.typedef.internal.LT; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.lang.IgniteBiTuple; @@ -218,36 +219,35 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap if (dataRegionCfgs != null) { for (DataRegionConfiguration dataRegionCfg : dataRegionCfgs) - addDataRegion(memCfg, dataRegionCfg, dataRegionCfg.getName()); + addDataRegion(memCfg, dataRegionCfg); } addDataRegion( memCfg, - memCfg.getDefaultDataRegionConfiguration(), - memCfg.getDefaultDataRegionConfiguration().getName() + memCfg.getDefaultDataRegionConfiguration() ); addDataRegion( memCfg, createSystemDataRegion( memCfg.getSystemRegionInitialSize(), - memCfg.getSystemRegionMaxSize() - ), - SYSTEM_DATA_REGION_NAME + memCfg.getSystemRegionMaxSize(), + CU.isPersistenceEnabled(memCfg) + ) ); } /** * @param dataStorageCfg Database config. * @param dataRegionCfg Data region config. - * @param dataRegionName Data region name. * @throws IgniteCheckedException If failed to initialize swap path. */ private void addDataRegion( DataStorageConfiguration dataStorageCfg, - DataRegionConfiguration dataRegionCfg, - String dataRegionName + DataRegionConfiguration dataRegionCfg ) throws IgniteCheckedException { + String dataRegionName = dataRegionCfg.getName(); + String dfltMemPlcName = dataStorageCfg.getDefaultDataRegionConfiguration().getName(); if (dfltMemPlcName == null) @@ -315,15 +315,21 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap /** * @param sysCacheInitSize Initial size of PageMemory to be created for system cache. * @param sysCacheMaxSize Maximum size of PageMemory to be created for system cache. + * @param persistenceEnabled Persistence enabled flag. * * @return {@link DataRegionConfiguration configuration} of DataRegion for system cache. */ - private DataRegionConfiguration createSystemDataRegion(long sysCacheInitSize, long sysCacheMaxSize) { + private DataRegionConfiguration createSystemDataRegion( + long sysCacheInitSize, + long sysCacheMaxSize, + boolean persistenceEnabled + ) { DataRegionConfiguration res = new DataRegionConfiguration(); res.setName(SYSTEM_DATA_REGION_NAME); res.setInitialSize(sysCacheInitSize); res.setMaxSize(sysCacheMaxSize); + res.setPersistenceEnabled(persistenceEnabled); return res; }
