You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by mm...@apache.org on 2021/11/02 20:32:48 UTC
[ignite] branch master updated: IGNITE-15802 Remove duplicated code
for affinity cache (#9519)
This is an automated email from the ASF dual-hosted git repository.
mmuzaf pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 1730bff IGNITE-15802 Remove duplicated code for affinity cache (#9519)
1730bff is described below
commit 1730bffedd074bca77e80e193437fc96d3e5b0af
Author: Maxim Muzafarov <mm...@apache.org>
AuthorDate: Tue Nov 2 23:32:18 2021 +0300
IGNITE-15802 Remove duplicated code for affinity cache (#9519)
---
.../DurableBackgroundCleanupIndexTreeTask.java | 1 +
.../managers/discovery/GridDiscoveryManager.java | 7 +-
.../affinity/GridAffinityAssignmentCache.java | 22 ++++-
.../cache/CacheAffinitySharedManager.java | 97 ++++------------------
.../processors/cache/CacheGroupContext.java | 21 +----
.../processors/cache/ClusterCachesInfo.java | 4 +-
.../processors/cache/GridCacheContextInfo.java | 2 +-
.../internal/processors/cache/GridCacheUtils.java | 16 ++++
.../persistence/file/FilePageStoreManager.java | 2 +-
9 files changed, 59 insertions(+), 113 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/DurableBackgroundCleanupIndexTreeTask.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/DurableBackgroundCleanupIndexTreeTask.java
index e568dad..46134d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/DurableBackgroundCleanupIndexTreeTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/index/sorted/DurableBackgroundCleanupIndexTreeTask.java
@@ -54,6 +54,7 @@ import static org.apache.ignite.internal.metric.IoStatisticsType.SORTED_INDEX;
*
* @deprecated Use {@link DurableBackgroundCleanupIndexTreeTaskV2}.
*/
+@Deprecated
public class DurableBackgroundCleanupIndexTreeTask implements DurableBackgroundTask {
/** */
private static final long serialVersionUID = 0L;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 007dfed..0041084 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -3602,12 +3602,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (grpAff.persistentCacheGrp && bltNodes != null && !bltNodes.contains(node.id())) // Filter out.
continue;
- List<ClusterNode> nodes = cacheGrpAffNodes.get(grpId);
-
- if (nodes == null)
- cacheGrpAffNodes.put(grpId, nodes = new ArrayList<>());
-
- nodes.add(node);
+ cacheGrpAffNodes.computeIfAbsent(grpId, id -> new ArrayList<>()).add(node);
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
index 78d3b86..c8d5da3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityAssignmentCache.java
@@ -38,6 +38,7 @@ import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.affinity.AffinityCentralizedFunction;
import org.apache.ignite.cache.affinity.AffinityFunction;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.events.DiscoveryEvent;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteInternalFuture;
@@ -59,6 +60,7 @@ import static org.apache.ignite.IgniteSystemProperties.IGNITE_AFFINITY_HISTORY_S
import static org.apache.ignite.IgniteSystemProperties.IGNITE_PART_DISTRIBUTION_WARN_THRESHOLD;
import static org.apache.ignite.IgniteSystemProperties.getFloat;
import static org.apache.ignite.IgniteSystemProperties.getInteger;
+import static org.apache.ignite.cache.CacheMode.LOCAL;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.internal.events.DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT;
@@ -163,7 +165,7 @@ public class GridAffinityAssignmentCache {
* @param backups Number of backups.
* @param locCache Local cache flag.
*/
- public GridAffinityAssignmentCache(GridKernalContext ctx,
+ private GridAffinityAssignmentCache(GridKernalContext ctx,
String cacheOrGrpName,
int grpId,
AffinityFunction aff,
@@ -196,6 +198,22 @@ public class GridAffinityAssignmentCache {
}
/**
+ * @param ctx Kernal context.
+ * @param aff Initialized affinity function.
+ * @param ccfg Cache configuration.
+ * @return Affinity assignment cache instance.
+ */
+ public static GridAffinityAssignmentCache create(GridKernalContext ctx, AffinityFunction aff, CacheConfiguration<?, ?> ccfg) {
+ return new GridAffinityAssignmentCache(ctx,
+ CU.cacheOrGroupName(ccfg),
+ CU.cacheGroupId(ccfg),
+ aff,
+ ccfg.getNodeFilter(),
+ ccfg.getBackups(),
+ ccfg.getCacheMode() == LOCAL);
+ }
+
+ /**
* @return Key to find caches with similar affinity.
*/
public Object similarAffinityKey() {
@@ -338,7 +356,7 @@ public class GridAffinityAssignmentCache {
if (!locCache) {
sorted = new ArrayList<>(discoCache.cacheGroupAffinityNodes(groupId()));
- Collections.sort(sorted, NodeOrderComparator.getInstance());
+ sorted.sort(NodeOrderComparator.getInstance());
}
else
sorted = Collections.singletonList(ctx.discovery().localNode());
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
index 706d7e6..bd2c4f6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java
@@ -658,7 +658,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
assert grpHolder != null && !grpHolder.nonAffNode() : grpHolder;
try {
- grpHolder = createHolder(
+ grpHolder = CacheGroupNoAffOrFilteredHolder.create(
cctx,
cachesRegistry.group(grpId),
topVer,
@@ -1984,7 +1984,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
CacheGroupContext grp = cctx.cache().cacheGroup(grpId);
if (grp == null) {
- grpHolder = createHolder(cctx, desc, topVer, null);
+ grpHolder = CacheGroupNoAffOrFilteredHolder.create(cctx, desc, topVer, null);
final GridAffinityAssignmentCache aff = grpHolder.affinity();
@@ -2135,9 +2135,8 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
assert (affNode && grp != null) || (!affNode && grp == null);
- CacheGroupHolder cacheGrp = affNode ?
- new CacheGroupAffNodeHolder(grp) :
- createHolder(cctx, desc, topVer, null);
+ CacheGroupHolder cacheGrp = affNode ? new CacheGroupAffNodeHolder(grp) :
+ CacheGroupNoAffOrFilteredHolder.create(cctx, desc, topVer, null);
CacheGroupHolder old = grpHolders.put(desc.groupId(), cacheGrp);
@@ -2642,7 +2641,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
/**
*
*/
- abstract class CacheGroupHolder {
+ private abstract static class CacheGroupHolder {
/** */
private final GridAffinityAssignmentCache aff;
@@ -2656,7 +2655,8 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
*/
CacheGroupHolder(boolean rebalanceEnabled,
GridAffinityAssignmentCache aff,
- @Nullable GridAffinityAssignmentCache initAff) {
+ @Nullable GridAffinityAssignmentCache initAff
+ ) {
this.aff = aff;
if (initAff != null)
@@ -2678,13 +2678,6 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
}
/**
- * @return Partitions number.
- */
- int partitions() {
- return aff.partitions();
- }
-
- /**
* @param discoCache Discovery data cache.
* @return Cache topology.
*/
@@ -2701,7 +2694,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
/**
* Created cache is started on coordinator.
*/
- private class CacheGroupAffNodeHolder extends CacheGroupHolder {
+ private static class CacheGroupAffNodeHolder extends CacheGroupHolder {
/** */
private final CacheGroupContext grp;
@@ -2738,9 +2731,9 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
/**
* Created if cache is not started on coordinator.
*/
- private class CacheGroupNoAffOrFilteredHolder extends CacheGroupHolder {
+ private static class CacheGroupNoAffOrFilteredHolder extends CacheGroupHolder {
/** */
- private final GridCacheSharedContext cctx;
+ private final GridCacheSharedContext<?, ?> cctx;
/**
* @param rebalanceEnabled Rebalance flag.
@@ -2750,7 +2743,7 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
*/
CacheGroupNoAffOrFilteredHolder(
boolean rebalanceEnabled,
- GridCacheSharedContext cctx,
+ GridCacheSharedContext<?, ?> cctx,
GridAffinityAssignmentCache aff,
@Nullable GridAffinityAssignmentCache initAff
) {
@@ -2763,27 +2756,12 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
* @param cctx Context.
* @param grpDesc Cache group descriptor.
* @param topVer Current exchange version.
- * @return Cache holder.
- * @throws IgniteCheckedException If failed.
- */
- CacheGroupNoAffOrFilteredHolder create(
- GridCacheSharedContext cctx,
- CacheGroupDescriptor grpDesc,
- AffinityTopologyVersion topVer
- ) throws IgniteCheckedException {
- return create(cctx, grpDesc, topVer, null);
- }
-
- /**
- * @param cctx Context.
- * @param grpDesc Cache group descriptor.
- * @param topVer Current exchange version.
* @param initAff Current affinity.
* @return Cache holder.
* @throws IgniteCheckedException If failed.
*/
- CacheGroupNoAffOrFilteredHolder create(
- GridCacheSharedContext cctx,
+ static CacheGroupNoAffOrFilteredHolder create(
+ GridCacheSharedContext<?, ?> cctx,
CacheGroupDescriptor grpDesc,
AffinityTopologyVersion topVer,
@Nullable GridAffinityAssignmentCache initAff
@@ -2806,16 +2784,8 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
U.startLifecycleAware(F.asList(affFunc));
- GridAffinityAssignmentCache aff = new GridAffinityAssignmentCache(cctx.kernalContext(),
- grpDesc.cacheOrGroupName(),
- grpDesc.groupId(),
- affFunc,
- ccfg.getNodeFilter(),
- ccfg.getBackups(),
- ccfg.getCacheMode() == LOCAL
- );
-
- return new CacheGroupNoAffOrFilteredHolder(ccfg.getRebalanceMode() != NONE, cctx, aff, initAff);
+ return new CacheGroupNoAffOrFilteredHolder(ccfg.getRebalanceMode() != NONE, cctx,
+ GridAffinityAssignmentCache.create(cctx.kernalContext(), affFunc, ccfg), initAff);
}
/** {@inheritDoc} */
@@ -2829,43 +2799,6 @@ public class CacheAffinitySharedManager<K, V> extends GridCacheSharedManagerAdap
}
}
- /** */
- private CacheGroupNoAffOrFilteredHolder createHolder(
- GridCacheSharedContext cctx,
- CacheGroupDescriptor grpDesc,
- AffinityTopologyVersion topVer,
- @Nullable GridAffinityAssignmentCache initAff
- ) throws IgniteCheckedException {
- assert grpDesc != null;
- assert !cctx.kernalContext().clientNode() || !CU.affinityNode(cctx.localNode(), grpDesc.config().getNodeFilter());
-
- CacheConfiguration<?, ?> ccfg = grpDesc.config();
-
- assert ccfg != null : grpDesc;
- assert ccfg.getCacheMode() != LOCAL : ccfg.getName();
-
- assert !cctx.discovery().cacheGroupAffinityNodes(grpDesc.groupId(),
- topVer).contains(cctx.localNode()) : grpDesc.cacheOrGroupName();
-
- AffinityFunction affFunc = cctx.cache().clone(ccfg.getAffinity());
-
- cctx.kernalContext().resource().injectGeneric(affFunc);
- cctx.kernalContext().resource().injectCacheName(affFunc, ccfg.getName());
-
- U.startLifecycleAware(F.asList(affFunc));
-
- GridAffinityAssignmentCache aff = new GridAffinityAssignmentCache(cctx.kernalContext(),
- grpDesc.cacheOrGroupName(),
- grpDesc.groupId(),
- affFunc,
- ccfg.getNodeFilter(),
- ccfg.getBackups(),
- ccfg.getCacheMode() == LOCAL
- );
-
- return new CacheGroupNoAffOrFilteredHolder(ccfg.getRebalanceMode() != NONE, cctx, aff, initAff);
- }
-
/**
* Tracks rebalance state on coordinator.
* After all partitions are rebalanced the current affinity is switched to ideal.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
index 3ff9ae5..6b7b06c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupContext.java
@@ -758,14 +758,7 @@ public class CacheGroupContext {
* @return Group name if it is specified, otherwise cache name.
*/
public String cacheOrGroupName() {
- return cacheOrGroupName(ccfg);
- }
-
- /**
- * @return Group name if it is specified, otherwise cache name.
- */
- public static String cacheOrGroupName(CacheConfiguration<?, ?> ccfg) {
- return ccfg.getGroupName() != null ? ccfg.getGroupName() : ccfg.getName();
+ return CU.cacheOrGroupName(ccfg);
}
/**
@@ -1060,17 +1053,7 @@ public class CacheGroupContext {
public void start() throws IgniteCheckedException {
GridAffinityAssignmentCache affCache = ctx.affinity().groupAffinity(grpId);
- if (affCache != null)
- aff = affCache;
- else
- aff = new GridAffinityAssignmentCache(ctx.kernalContext(),
- cacheOrGroupName(),
- grpId,
- ccfg.getAffinity(),
- ccfg.getNodeFilter(),
- ccfg.getBackups(),
- ccfg.getCacheMode() == LOCAL
- );
+ aff = affCache == null ? GridAffinityAssignmentCache.create(ctx.kernalContext(), ccfg.getAffinity(), ccfg) : affCache;
if (ccfg.getCacheMode() != LOCAL) {
top = ctx.kernalContext().resource().resolve(new GridDhtPartitionTopologyImpl(ctx, this));
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
index 235f69a..2841e02 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
@@ -2024,7 +2024,7 @@ public class ClusterCachesInfo {
", conflictingCacheName=" + desc.cacheName() + ']';
}
- int grpId = CU.cacheGroupId(cfg.getName(), cfg.getGroupName());
+ int grpId = CU.cacheGroupId(cfg);
if (cfg.getGroupName() != null) {
if (cacheGroupByName(cfg.getGroupName()) == null) {
@@ -2284,7 +2284,7 @@ public class ClusterCachesInfo {
}
}
- int grpId = CU.cacheGroupId(startedCacheCfg.getName(), startedCacheCfg.getGroupName());
+ int grpId = CU.cacheGroupId(startedCacheCfg);
Map<String, Integer> caches = Collections.singletonMap(startedCacheCfg.getName(), cacheId);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
index 6a5f6c6..3892fbc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheContextInfo.java
@@ -98,7 +98,7 @@ public class GridCacheContextInfo<K, V> {
* @return Cache group name.
*/
public String groupName() {
- return CacheGroupContext.cacheOrGroupName(config);
+ return CU.cacheOrGroupName(config);
}
/**
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 8642cc7..efa9ccf 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
@@ -1110,6 +1110,22 @@ public class GridCacheUtils {
}
/**
+ * @param ccfg Cache configuration.
+ * @return Group ID.
+ */
+ public static int cacheGroupId(CacheConfiguration<?, ?> ccfg) {
+ return CU.cacheId(cacheOrGroupName(ccfg));
+ }
+
+ /**
+ * @param ccfg Cache configuration.
+ * @return Group name if it is specified, otherwise cache name.
+ */
+ public static String cacheOrGroupName(CacheConfiguration<?, ?> ccfg) {
+ return ccfg.getGroupName() == null ? ccfg.getName() : ccfg.getGroupName();
+ }
+
+ /**
* Convert TTL to expire time.
*
* @param ttl TTL.
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 f749bf4..7e2ff26 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
@@ -1182,7 +1182,7 @@ public class FilePageStoreManager extends GridCacheSharedManagerAdapter implemen
public static String cacheDirName(CacheConfiguration<?, ?> ccfg) {
boolean isSharedGrp = ccfg.getGroupName() != null;
- return cacheDirName(isSharedGrp, isSharedGrp ? ccfg.getGroupName() : ccfg.getName());
+ return cacheDirName(isSharedGrp, CU.cacheOrGroupName(ccfg));
}
/**