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.