This is an automated email from the ASF dual-hosted git repository.
sboikov pushed a commit to branch ignite-invokeAll
in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 2eddbf817fcc7360e58857a81ff26968e1ee783e
Author: sboikov
AuthorDate: Fri Mar 1 12:30:05 2019 +0300
invokeAll
---
.../cache/IgniteCacheOffheapManager.java | 5 +-
.../cache/IgniteCacheOffheapManagerImpl.java | 31 ++-
.../distributed/dht/atomic/GridDhtAtomicCache.java | 288 +++--
.../atomic/GridNearAtomicAbstractUpdateFuture.java | 2 +
.../GridNearAtomicAbstractUpdateRequest.java | 5 +
.../atomic/GridNearAtomicFullUpdateRequest.java| 63 +
.../dht/atomic/GridNearAtomicUpdateFuture.java | 2 +
.../cache/persistence/GridCacheOffheapManager.java | 3 +-
.../processors/cache/tree/CacheDataTree.java | 2 +-
9 files changed, 310 insertions(+), 91 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
index 9455c2a..d187444 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheOffheapManager.java
@@ -38,6 +38,7 @@ import
org.apache.ignite.internal.processors.cache.persistence.partstate.GroupPa
import
org.apache.ignite.internal.processors.cache.persistence.partstate.PartitionRecoverState;
import
org.apache.ignite.internal.processors.cache.persistence.tree.reuse.ReuseList;
import org.apache.ignite.internal.processors.cache.tree.PendingEntriesTree;
+import org.apache.ignite.internal.processors.cache.tree.SearchRowEx;
import
org.apache.ignite.internal.processors.cache.tree.mvcc.data.MvccUpdateResult;
import
org.apache.ignite.internal.processors.cache.tree.mvcc.search.MvccLinkAwareSearchRow;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
@@ -152,6 +153,8 @@ public interface IgniteCacheOffheapManager {
*/
public CacheDataStore dataStore(GridDhtLocalPartition part);
+public Comparator updateKeysComparator();
+
/**
* @param store Data store.
* @throws IgniteCheckedException If failed.
@@ -900,7 +903,7 @@ public interface IgniteCacheOffheapManager {
* @return Cache search row.
* @throws IgniteCheckedException If failed.
*/
-public CacheSearchRow createSearchRow(GridCacheContext cctx,
KeyCacheObject key, Object data) throws IgniteCheckedException;
+public SearchRowEx createSearchRow(GridCacheContext cctx,
KeyCacheObject key, Object data) throws IgniteCheckedException;
/**
* @return Rows comparator.
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 0a621dc..a69157e 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
@@ -188,6 +188,28 @@ public class IgniteCacheOffheapManagerImpl implements
IgniteCacheOffheapManager
/** */
protected GridStripedLock partStoreLock = new
GridStripedLock(Runtime.getRuntime().availableProcessors());
+/** */
+private final Comparator updateKeysCmp = new
Comparator() {
+@Override public int compare(KeyCacheObject key1, KeyCacheObject key2)
{
+try {
+int cmp = Integer.compare(key1.partition(), key2.partition());
+
+if (cmp != 0)
+return cmp;
+
+cmp = Integer.compare(key1.hashCode(), key2.hashCode());
+
+if (cmp != 0)
+return cmp;
+
+return
CacheDataTree.compareKeyBytes(key1.valueBytes(grp.cacheObjectContext()),
key2.valueBytes(grp.cacheObjectContext()));
+}
+catch (IgniteCheckedException e) {
+throw new IgniteException(e);
+}
+};
+};
+
/** {@inheritDoc} */
@Override public GridAtomicLong globalRemoveId() {
return globalRmvId;
@@ -405,6 +427,11 @@ public class IgniteCacheOffheapManagerImpl implements
IgniteCacheOffheapManager
return store == null ? 0 : store.cacheSize(cacheId);
}
+/** {@inheritDoc} */
+@Override public Comparator updateKeysComparator() {
+return updateKeysCmp;
+}
+
/**
* @param primary Primary data flag.
* @param backup Primary data flag.
@@ -1652,10 +1679,10 @@ public class IgniteCacheOffheapManagerImpl implements
IgniteCacheOffheapManager
}
/** {@inheritDoc} */
-@Ove