This is an automated email from the ASF dual-hosted git repository.
ascherbakov pushed a commit to branch ignite-2.8.1
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/ignite-2.8.1 by this push:
new 74cb70d IGNITE-12795 Fixed exception on atomic backup update. - Fixes
#7718.
74cb70d is described below
commit 74cb70d83e4ddbc3b1e4e2a806a2c82b07e6ebdc
Author: Alexey Scherbakov <[email protected]>
AuthorDate: Fri Apr 24 12:17:16 2020 +0300
IGNITE-12795 Fixed exception on atomic backup update. - Fixes #7718.
Signed-off-by: Aleksei Scherbakov <[email protected]>
(cherry picked from commit 811439cf43b39e0b69889c4c79a808dc15c3cd9f)
---
.../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 c8abe69..763ae29 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 1055152..f13300c 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());
}