You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sk...@apache.org on 2021/03/29 17:49:07 UTC
[ignite] branch master updated: IGNITE-14076 Improved throughput of
transactional putAll (optimistic rr rc). Fixes #8885
This is an automated email from the ASF dual-hosted git repository.
sk0x50 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 96ba8f0 IGNITE-14076 Improved throughput of transactional putAll (optimistic rr rc). Fixes #8885
96ba8f0 is described below
commit 96ba8f0fe165c00b970866a216162fcaa645ed46
Author: Stanilovsky Evgeny <st...@gmail.com>
AuthorDate: Mon Mar 29 20:48:25 2021 +0300
IGNITE-14076 Improved throughput of transactional putAll (optimistic rr rc). Fixes #8885
Signed-off-by: Slava Koptilin <sl...@gmail.com>
---
.../cache/distributed/dht/GridDhtTxPrepareFuture.java | 18 +++++++++++++-----
.../near/GridNearOptimisticTxPrepareFuture.java | 2 +-
.../distributed/near/GridNearTxPrepareResponse.java | 2 +-
.../org/apache/ignite/internal/util/GridLeanSet.java | 2 +-
.../IgniteCacheNearRestartRollbackSelfTest.java | 2 ++
5 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index b5ccbd7..14cd562 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -941,7 +941,9 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
res.completedVersions(versPair.get1(), versPair.get2());
}
- res.pending(localDhtPendingVersions(tx.writeEntries(), min));
+ // Pending versions are required for near caches only.
+ if (req.near())
+ res.pending(localDhtPendingVersions(tx.writeEntries(), min));
tx.implicitSingleResult(ret);
}
@@ -1768,15 +1770,21 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
* @param baseVer Base version.
* @return Collection of pending candidates versions.
*/
- private Collection<GridCacheVersion> localDhtPendingVersions(Iterable<IgniteTxEntry> entries,
- GridCacheVersion baseVer) {
- Collection<GridCacheVersion> lessPending = new GridLeanSet<>(5);
+ private Collection<GridCacheVersion> localDhtPendingVersions(
+ Iterable<IgniteTxEntry> entries,
+ GridCacheVersion baseVer
+ ) {
+ Collection<GridCacheVersion> lessPending = null;
for (IgniteTxEntry entry : entries) {
try {
for (GridCacheMvccCandidate cand : entry.cached().localCandidates()) {
- if (cand.version().isLess(baseVer))
+ if (cand.version().isLess(baseVer)) {
+ if (lessPending == null)
+ lessPending = new GridLeanSet<>(5);
+
lessPending.add(cand.version());
+ }
}
}
catch (GridCacheEntryRemovedException ignored) {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
index 0954974..0f875a2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
@@ -282,7 +282,7 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearOptimisticTxPrepa
Throwable err0 = err;
if ((!tx.onePhaseCommit() || tx.mappings().get(cctx.localNodeId()) == null) &&
- (err0 == null || tx.needCheckBackup()))
+ (err0 == null || tx.needCheckBackup()))
tx.state(PREPARED);
if (super.onDone(tx, err0)) {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
index ef547cc..beb94aea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxPrepareResponse.java
@@ -165,7 +165,7 @@ public class GridNearTxPrepareResponse extends GridDistributedTxPrepareResponse
* @return Pending versions.
*/
public Collection<GridCacheVersion> pending() {
- return pending == null ? Collections.<GridCacheVersion>emptyList() : pending;
+ return pending == null ? Collections.emptyList() : pending;
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
index a6f2c574..3dd4d50 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLeanSet.java
@@ -46,7 +46,7 @@ public class GridLeanSet<E> extends GridSetWrapper<E> implements Cloneable {
* @param size Initial size.
*/
public GridLeanSet(int size) {
- super(new GridLeanMap<E, Object>(size));
+ super(new GridLeanMap<>(size));
}
/**
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
index 46375f3..d6eb321 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
@@ -46,6 +46,7 @@ import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionRollbackException;
+import org.junit.Ignore;
import org.junit.Test;
import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
@@ -54,6 +55,7 @@ import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_REA
/**
*
*/
+@Ignore("https://issues.apache.org/jira/browse/IGNITE-14327")
public class IgniteCacheNearRestartRollbackSelfTest extends GridCommonAbstractTest {
/**
* The number of entries to put to the test cache.