You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by as...@apache.org on 2020/04/24 09:18:24 UTC
[ignite] branch master updated: IGNITE-12795 Fixed exception on
atomic backup update. - Fixes #7718.
This is an automated email from the ASF dual-hosted git repository.
ascherbakov 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 811439c IGNITE-12795 Fixed exception on atomic backup update. - Fixes #7718.
811439c is described below
commit 811439cf43b39e0b69889c4c79a808dc15c3cd9f
Author: Alexey Scherbakov <al...@gmail.com>
AuthorDate: Fri Apr 24 12:17:16 2020 +0300
IGNITE-12795 Fixed exception on atomic backup update. - Fixes #7718.
Signed-off-by: Aleksei Scherbakov <as...@apache.org>
---
.../internal/processors/cache/CacheGroupContext.java | 16 ++++++++++++++++
.../processors/cache/IgniteCacheOffheapManagerImpl.java | 4 ++--
.../cache/PartitionUpdateCounterDebugWrapper.java | 5 +++++
.../cache/transactions/PartitionUpdateCounterTest.java | 5 ++++-
4 files changed, 27 insertions(+), 3 deletions(-)
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 fe45ae1..9adec6e 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
@@ -66,6 +66,7 @@ import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgnitePredicate;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.cache.CacheAtomicityMode.ATOMIC;
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL_SNAPSHOT;
import static org.apache.ignite.cache.CacheMode.LOCAL;
import static org.apache.ignite.cache.CacheMode.REPLICATED;
@@ -181,6 +182,9 @@ public class CacheGroupContext {
/** Statistics holder to track IO operations for data pages. */
private final IoStatisticsHolder statHolderData;
+ /** */
+ private volatile boolean hasAtomicCaches;
+
/** Cache group metrics. */
private final CacheGroupMetricsImpl metrics;
@@ -257,6 +261,8 @@ public class CacheGroupContext {
statHolderIdx = new IoStatisticsHolderIndex(HASH_INDEX, cacheOrGroupName(), HASH_PK_IDX_NAME, mmgr);
statHolderData = new IoStatisticsHolderCache(cacheOrGroupName(), grpId, mmgr);
}
+
+ hasAtomicCaches = ccfg.getAtomicityMode() == ATOMIC;
}
/**
@@ -358,6 +364,9 @@ public class CacheGroupContext {
if (!drEnabled && cctx.isDrEnabled())
drEnabled = true;
+
+ if (!hasAtomicCaches)
+ hasAtomicCaches = cctx.config().getAtomicityMode() == ATOMIC;
}
/**
@@ -1285,6 +1294,13 @@ public class CacheGroupContext {
}
/**
+ * @return {@code True} if group has atomic caches.
+ */
+ public boolean hasAtomicCaches() {
+ return hasAtomicCaches;
+ }
+
+ /**
* @return Metrics.
*/
public CacheGroupMetricsImpl metrics() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
index 7f3c277..ee593d4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManagerImpl.java
@@ -1483,8 +1483,8 @@ public class IgniteCacheOffheapManagerImpl implements IgniteCacheOffheapManager
this.dataTree = dataTree;
PartitionUpdateCounter delegate = grp.mvccEnabled() ? new PartitionUpdateCounterMvccImpl(grp) :
- grp.persistenceEnabled() ? new PartitionUpdateCounterTrackingImpl(grp) :
- new PartitionUpdateCounterVolatileImpl(grp);
+ !grp.persistenceEnabled() || grp.hasAtomicCaches() ? new PartitionUpdateCounterVolatileImpl(grp) :
+ new PartitionUpdateCounterTrackingImpl(grp);
pCntr = ctx.logger(PartitionUpdateCounterDebugWrapper.class).isDebugEnabled() ?
new PartitionUpdateCounterDebugWrapper(partId, delegate) : delegate;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/PartitionUpdateCounterDebugWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/PartitionUpdateCounterDebugWrapper.java
index 5ce351f..556e329 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/PartitionUpdateCounterDebugWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/PartitionUpdateCounterDebugWrapper.java
@@ -266,4 +266,9 @@ public class PartitionUpdateCounterDebugWrapper implements PartitionUpdateCounte
@Override public CacheGroupContext context() {
return delegate.context();
}
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return delegate.toString();
+ }
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/PartitionUpdateCounterTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/PartitionUpdateCounterTest.java
index 688a6aa..5178e70 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/PartitionUpdateCounterTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/PartitionUpdateCounterTest.java
@@ -404,7 +404,10 @@ public class PartitionUpdateCounterTest extends GridCommonAbstractTest {
PartitionUpdateCounter cntr = counter(0, grid0.name());
- assertTrue(cntr instanceof PartitionUpdateCounterTrackingImpl);
+ if (mode == CacheAtomicityMode.TRANSACTIONAL)
+ assertTrue(cntr instanceof PartitionUpdateCounterTrackingImpl);
+ else if (mode == CacheAtomicityMode.ATOMIC)
+ assertTrue(cntr instanceof PartitionUpdateCounterVolatileImpl);
assertEquals(cntr.initial(), cntr.get());
}