You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dg...@apache.org on 2018/11/01 07:22:39 UTC
ignite git commit: IGNITE-9418 Avoid initialize file page store
manager for caches during PME synchronously - Fixes #4827.
Repository: ignite
Updated Branches:
refs/heads/master 7ea120733 -> 31bf38d37
IGNITE-9418 Avoid initialize file page store manager for caches during PME synchronously - Fixes #4827.
Signed-off-by: Dmitriy Govorukhin <dm...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/31bf38d3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/31bf38d3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/31bf38d3
Branch: refs/heads/master
Commit: 31bf38d37ff0b73b24a8fa0034630d833eee1f75
Parents: 7ea1207
Author: Evgeny Stanilovskiy <es...@gridgain.com>
Authored: Thu Nov 1 10:11:44 2018 +0300
Committer: Dmitriy Govorukhin <dm...@gmail.com>
Committed: Thu Nov 1 10:11:44 2018 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheProcessor.java | 2 -
.../GridDhtPartitionsExchangeFuture.java | 8 ---
.../persistence/file/FilePageStoreManager.java | 57 ++++++++++++++++----
3 files changed, 46 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/31bf38d3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index d33e929..88cc627 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -2210,8 +2210,6 @@ public class GridCacheProcessor extends GridProcessorAdapter implements Metastor
boolean affNode = checkForAffinityNode(desc, reqNearCfg, ccfg);
- preparePageStore(desc, affNode);
-
CacheGroupContext grp = prepareCacheGroup(desc, exchTopVer, cacheObjCtx, affNode, startCfg.getGroupName());
GridCacheContext cacheCtx = createCache(ccfg,
http://git-wip-us.apache.org/repos/asf/ignite/blob/31bf38d3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index b26db67..3d27e8a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -875,14 +875,6 @@ public class GridDhtPartitionsExchangeFuture extends GridDhtTopologyFutureAdapte
try {
cctx.database().cleanupRestoredCaches();
- for (DynamicCacheDescriptor desc : cctx.cache().cacheDescriptors().values()) {
- if (CU.isPersistentCache(desc.cacheConfiguration(),
- cctx.gridConfig().getDataStorageConfiguration())) {
- // Perform cache init from scratch.
- cctx.cache().preparePageStore(desc, true);
- }
- }
-
// Set initial node started marker.
cctx.database().nodeStart(null);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/31bf38d3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
index e05cb71..0f01fd4 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStoreManager.java
@@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -63,6 +64,7 @@ import org.apache.ignite.internal.processors.cache.persistence.filename.PdsFolde
import org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteCacheSnapshotManager;
import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.Marshaller;
@@ -400,16 +402,15 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
CacheStoreHolder old = idxCacheStores.remove(grp.groupId());
- assert old != null : "Missing cache store holder [cache=" + grp.cacheOrGroupName() +
- ", locNodeId=" + cctx.localNodeId() + ", gridName=" + cctx.igniteInstanceName() + ']';
+ if (old != null) {
+ IgniteCheckedException ex = shutdown(old, /*clean files if destroy*/destroy, null);
- IgniteCheckedException ex = shutdown(old, /*clean files if destroy*/destroy, null);
+ if (destroy)
+ removeCacheGroupConfigurationData(grp);
- if (destroy)
- removeCacheGroupConfigurationData(grp);
-
- if (ex != null)
- throw ex;
+ if (ex != null)
+ throw ex;
+ }
}
/** {@inheritDoc} */
@@ -621,8 +622,9 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
return new CacheStoreHolder(idxStore, partStores);
}
- catch (StorageException e) {
- cctx.kernalContext().failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e));
+ catch (IgniteCheckedException e) {
+ if (X.hasCause(e, StorageException.class, IOException.class))
+ cctx.kernalContext().failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e));
throw e;
}
@@ -1011,6 +1013,39 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
}
/**
+ * Return cache store holedr.
+ *
+ * @param grpId Cache group ID.
+ * @return Cache store holder.
+ */
+ private CacheStoreHolder getHolder(int grpId) throws IgniteCheckedException {
+ try {
+ return idxCacheStores.computeIfAbsent(grpId, (key) -> {
+ CacheGroupDescriptor gDesc = cctx.cache().cacheGroupDescriptors().get(grpId);
+
+ CacheStoreHolder holder0 = null;
+
+ if (gDesc != null) {
+ if (CU.isPersistentCache(gDesc.config(), cctx.gridConfig().getDataStorageConfiguration())) {
+ try {
+ holder0 = initForCache(gDesc, gDesc.config());
+ } catch (IgniteCheckedException e) {
+ throw new IgniteException(e);
+ }
+ }
+ }
+
+ return holder0;
+ });
+ } catch (IgniteException ex) {
+ if (X.hasCause(ex, IgniteCheckedException.class))
+ throw ex.getCause(IgniteCheckedException.class);
+ else
+ throw ex;
+ }
+ }
+
+ /**
* @param grpId Cache group ID.
* @param partId Partition ID.
* @return Page store for the corresponding parameters.
@@ -1019,7 +1054,7 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
* Note: visible for testing.
*/
public PageStore getStore(int grpId, int partId) throws IgniteCheckedException {
- CacheStoreHolder holder = idxCacheStores.get(grpId);
+ CacheStoreHolder holder = getHolder(grpId);
if (holder == null)
throw new IgniteCheckedException("Failed to get page store for the given cache ID " +