You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/12/05 15:05:50 UTC
ignite git commit: ignite-1.8 drop
Repository: ignite
Updated Branches:
refs/heads/ignite-1.8-drop1 [created] f36b8b920
ignite-1.8 drop
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f36b8b92
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f36b8b92
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f36b8b92
Branch: refs/heads/ignite-1.8-drop1
Commit: f36b8b92098db9feea704a058d873f2ca4c35568
Parents: 445cde7
Author: sboikov <sb...@gridgain.com>
Authored: Mon Dec 5 18:04:20 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Dec 5 18:04:20 2016 +0300
----------------------------------------------------------------------
.../distributed/GridCacheTxRecoveryFuture.java | 6 +-
.../cache/distributed/dht/GridDhtGetFuture.java | 2 +-
.../distributed/dht/GridDhtLockFuture.java | 24 ++---
.../distributed/dht/GridDhtTxPrepareFuture.java | 16 +--
.../colocated/GridDhtColocatedLockFuture.java | 12 +--
.../distributed/near/GridNearLockFuture.java | 12 +--
...arOptimisticSerializableTxPrepareFuture.java | 6 +-
.../near/GridNearOptimisticTxPrepareFuture.java | 18 ++--
.../GridNearPessimisticTxPrepareFuture.java | 6 +-
.../near/GridNearTxFinishFuture.java | 6 +-
.../util/future/GridCompoundFuture.java | 100 ++++---------------
11 files changed, 74 insertions(+), 134 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
index c07a817..7312386 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheTxRecoveryFuture.java
@@ -426,10 +426,10 @@ public class GridCacheTxRecoveryFuture extends GridCompoundIdentityFuture<Boolea
@SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<Boolean> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<Boolean> fut = futs.get(i);
if (!isMini(fut))
continue;
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
index d2a3b3c..086d988 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtGetFuture.java
@@ -275,7 +275,7 @@ public final class GridDhtGetFuture<K, V> extends GridCompoundIdentityFuture<Col
// Optimization to avoid going through compound future,
// if getAsync() has been completed and no other futures added to this
// compound future.
- if (fut.isDone() && futuresCount() == 0) {
+ if (fut.isDone() && futs.size() == 0) {
if (fut.error() != null)
onDone(fut.error());
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index f2b5f49..d9218de 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -293,7 +293,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
* @return Entries.
*/
public Collection<GridDhtCacheEntry> entriesCopy() {
- synchronized (sync) {
+ synchronized (futs) {
return new ArrayList<>(entries());
}
}
@@ -408,7 +408,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
return null;
}
- synchronized (sync) {
+ synchronized (futs) {
entries.add(c == null || c.reentry() ? null : entry);
if (c != null && !c.reentry())
@@ -542,10 +542,10 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
@SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- MiniFuture mini = (MiniFuture) future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ MiniFuture mini = (MiniFuture) futs.get(i);
if (mini.futureId().equals(miniId)) {
if (!mini.isDone())
@@ -610,7 +610,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
* @param t Error.
*/
public void onError(Throwable t) {
- synchronized (sync) {
+ synchronized (futs) {
if (err != null)
return;
@@ -657,7 +657,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
log.debug("Received onOwnerChanged() callback [entry=" + entry + ", owner=" + owner + "]");
if (owner != null && owner.version().equals(lockVer)) {
- synchronized (sync) {
+ synchronized (futs) {
if (!pendingLocks.remove(entry.key()))
return false;
}
@@ -675,7 +675,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
* @return {@code True} if locks have been acquired.
*/
private boolean checkLocks() {
- synchronized (sync) {
+ synchronized (futs) {
return pendingLocks.isEmpty();
}
}
@@ -708,7 +708,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
if (isDone() || (err == null && success && !checkLocks()))
return false;
- synchronized (sync) {
+ synchronized (futs) {
if (this.err == null)
this.err = err;
}
@@ -787,7 +787,7 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
* @param entries Entries.
*/
private void map(Iterable<GridDhtCacheEntry> entries) {
- synchronized (sync) {
+ synchronized (futs) {
if (mapped)
return;
@@ -1119,13 +1119,13 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
if (log.isDebugEnabled())
log.debug("Timed out waiting for lock response: " + this);
- synchronized (sync) {
+ synchronized (futs) {
timedOut = true;
// Stop locks and responses processing.
pendingLocks.clear();
- clear();
+ futs.clear();
}
boolean releaseLocks = !(inTx() && cctx.tm().deadlockDetectionEnabled());
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
----------------------------------------------------------------------
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 b2b4430..5c2783d 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
@@ -278,7 +278,7 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter
boolean rmv;
- synchronized (sync) {
+ synchronized (futs) {
rmv = lockKeys.remove(entry.txKey());
}
@@ -309,7 +309,7 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter
if (!locksReady)
return false;
- synchronized (sync) {
+ synchronized (futs) {
return lockKeys.isEmpty();
}
}
@@ -563,10 +563,10 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter
@SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<IgniteInternalTx> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<IgniteInternalTx> fut = futs.get(i);
if (!isMini(fut))
continue;
@@ -620,7 +620,7 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter
}
if (tx.optimistic() && txEntry.explicitVersion() == null) {
- synchronized (sync) {
+ synchronized (futs) {
lockKeys.add(txEntry.txKey());
}
}
@@ -1795,8 +1795,8 @@ public final class GridDhtTxPrepareFuture extends GridCompoundFuture<IgniteInter
/** {@inheritDoc} */
@Override public void onTimeout() {
- synchronized (sync) {
- clear();
+ synchronized (futs) {
+ futs.clear();
lockKeys.clear();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index ddb6500..b0eea01 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -444,7 +444,7 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
* @return Keys for which locks requested from remote nodes but response isn't received.
*/
public Set<IgniteTxKey> requestedKeys() {
- synchronized (sync) {
+ synchronized (futs) {
if (timeoutObj != null && timeoutObj.requestedKeys != null)
return timeoutObj.requestedKeys;
@@ -481,10 +481,10 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
@SuppressWarnings({"ForLoopReplaceableByForEach", "IfMayBeConditional"})
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<Boolean> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<Boolean> fut = futs.get(i);
if (!isMini(fut))
continue;
@@ -1331,10 +1331,10 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
log.debug("Timed out waiting for lock response: " + this);
if (inTx() && cctx.tm().deadlockDetectionEnabled()) {
- synchronized (sync) {
+ synchronized (futs) {
requestedKeys = requestedKeys0();
- clear(); // Stop response processing.
+ futs.clear(); // Stop response processing.
}
Set<IgniteTxKey> keys = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index 02f6cce..3d9b6ab 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -490,7 +490,7 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
* @return Keys for which locks requested from remote nodes but response isn't received.
*/
public Set<IgniteTxKey> requestedKeys() {
- synchronized (sync) {
+ synchronized (futs) {
if (timeoutObj != null && timeoutObj.requestedKeys != null)
return timeoutObj.requestedKeys;
@@ -527,10 +527,10 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
@SuppressWarnings({"ForLoopReplaceableByForEach", "IfMayBeConditional"})
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<Boolean> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<Boolean> fut = futs.get(i);
if (!isMini(fut))
continue;
@@ -1427,10 +1427,10 @@ public final class GridNearLockFuture extends GridCompoundIdentityFuture<Boolean
timedOut = true;
if (inTx() && cctx.tm().deadlockDetectionEnabled()) {
- synchronized (sync) {
+ synchronized (futs) {
requestedKeys = requestedKeys0();
- clear(); // Stop response processing.
+ futs.clear(); // Stop response processing.
}
Set<IgniteTxKey> keys = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
index 3676a3c..4cbfb27 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticSerializableTxPrepareFuture.java
@@ -229,10 +229,10 @@ public class GridNearOptimisticSerializableTxPrepareFuture extends GridNearOptim
@SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<GridNearTxPrepareResponse> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<GridNearTxPrepareResponse> fut = futs.get(i);
if (!isMini(fut))
continue;
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearOptimisticTxPrepareFuture.java
----------------------------------------------------------------------
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 87c9e1d..ad6ad5d 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
@@ -201,9 +201,9 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearOptimisticTxPrepa
*/
@SuppressWarnings("ForLoopReplaceableByForEach")
public Set<IgniteTxKey> requestedKeys() {
- synchronized (sync) {
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<GridNearTxPrepareResponse> fut = future(i);
+ synchronized (futs) {
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<GridNearTxPrepareResponse> fut = futs.get(i);
if (isMini(fut) && !fut.isDone()) {
MiniFuture miniFut = (MiniFuture)fut;
@@ -232,10 +232,10 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearOptimisticTxPrepa
@SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<GridNearTxPrepareResponse> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<GridNearTxPrepareResponse> fut = futs.get(i);
if (!isMini(fut))
continue;
@@ -686,9 +686,9 @@ public class GridNearOptimisticTxPrepareFuture extends GridNearOptimisticTxPrepa
if (keyLockFut != null)
keys = new HashSet<>(keyLockFut.lockKeys);
else {
- synchronized (sync) {
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<GridNearTxPrepareResponse> fut = future(i);
+ synchronized (futs) {
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<GridNearTxPrepareResponse> fut = futs.get(i);
if (isMini(fut) && !fut.isDone()) {
MiniFuture miniFut = (MiniFuture)fut;
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
index 01fb5fd..0a8baf2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
@@ -132,10 +132,10 @@ public class GridNearPessimisticTxPrepareFuture extends GridNearTxPrepareFutureA
@SuppressWarnings("ForLoopReplaceableByForEach")
private MiniFuture miniFuture(IgniteUuid miniId) {
// We iterate directly over the futs collection here to avoid copy.
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation.
- for (int i = 0; i < futuresCount(); i++) {
- MiniFuture mini = (MiniFuture) future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ MiniFuture mini = (MiniFuture) futs.get(i);
if (mini.futureId().equals(miniId)) {
if (!mini.isDone())
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
index f14d747..46604c7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
@@ -200,9 +200,9 @@ public final class GridNearTxFinishFuture<K, V> extends GridCompoundIdentityFutu
if (!isDone()) {
FinishMiniFuture finishFut = null;
- synchronized (sync) {
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<IgniteInternalTx> fut = future(i);
+ synchronized (futs) {
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<IgniteInternalTx> fut = futs.get(i);
if (fut.getClass() == FinishMiniFuture.class) {
FinishMiniFuture f = (FinishMiniFuture)fut;
http://git-wip-us.apache.org/repos/asf/ignite/blob/f36b8b92/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
index 0f7e020..3409341 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
@@ -33,8 +33,6 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
/**
@@ -55,11 +53,8 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
private static final AtomicIntegerFieldUpdater<GridCompoundFuture> LSNR_CALLS_UPD =
AtomicIntegerFieldUpdater.newUpdater(GridCompoundFuture.class, "lsnrCalls");
- /** Sync object */
- protected final Object sync = new Object();
-
- /** Possible values: null (no future), IgniteInternalFuture instance (single future) or List of futures */
- private volatile Object futs;
+ /** Futures. */
+ protected final ArrayList<IgniteInternalFuture<T>> futs = new ArrayList<>();
/** Reducer. */
@GridToStringInclude
@@ -159,16 +154,9 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
*
* @return Collection of futures.
*/
- @SuppressWarnings("unchecked")
public Collection<IgniteInternalFuture<T>> futures() {
- synchronized (sync) {
- if(futs == null)
- return Collections.emptyList();
-
- if (futs instanceof IgniteInternalFuture)
- return Collections.singletonList((IgniteInternalFuture<T>)futs);
-
- return new ArrayList<>((Collection<IgniteInternalFuture<T>>)futs);
+ synchronized (futs) {
+ return new ArrayList<>(futs);
}
}
@@ -191,10 +179,10 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
*/
@SuppressWarnings("ForLoopReplaceableByForEach")
public boolean hasPending() {
- synchronized (sync) {
+ synchronized (futs) {
// Avoid iterator creation and collection copy.
- for (int i = 0; i < futuresCount(); i++) {
- IgniteInternalFuture<T> fut = future(i);
+ for (int i = 0; i < futs.size(); i++) {
+ IgniteInternalFuture<T> fut = futs.get(i);
if (!fut.isDone())
return true;
@@ -209,23 +197,11 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
*
* @param fut Future to add.
*/
- @SuppressWarnings("unchecked")
public void add(IgniteInternalFuture<T> fut) {
assert fut != null;
- synchronized (sync) {
- if (futs == null)
- futs = fut;
- else if (futs instanceof IgniteInternalFuture) {
- Collection<IgniteInternalFuture> futs0 = new ArrayList<>(4);
-
- futs0.add((IgniteInternalFuture)futs);
- futs0.add(fut);
-
- futs = futs0;
- }
- else
- ((Collection<IgniteInternalFuture>)futs).add(fut);
+ synchronized (futs) {
+ futs.add(fut);
}
fut.listen(this);
@@ -241,17 +217,8 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
}
/**
- * Clear futures.
- */
- protected void clear() {
- synchronized (sync) {
- futs = null;
- }
- }
-
- /**
- * @return {@code True} if this future was initialized. Initialization happens when {@link #markInitialized()}
- * method is called on future.
+ * @return {@code True} if this future was initialized. Initialization happens when
+ * {@link #markInitialized()} method is called on future.
*/
public boolean initialized() {
return initFlag == INIT_FLAG;
@@ -269,7 +236,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
* Check completeness of the future.
*/
private void checkComplete() {
- if (initialized() && !isDone() && lsnrCalls == futuresCount()) {
+ if (initialized() && !isDone() && lsnrCalls == futuresSize()) {
try {
onDone(rdc != null ? rdc.reduce() : null);
}
@@ -289,38 +256,11 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
}
/**
- * Returns future at the specified position in this list.
- *
- * @param idx - index index of the element to return
- * @return Future.
- */
- @SuppressWarnings("unchecked")
- protected IgniteInternalFuture<T> future(int idx) {
- assert Thread.holdsLock(sync);
- assert futs != null && idx >= 0 && idx < futuresCount();
-
- if (futs instanceof IgniteInternalFuture) {
- assert idx == 0;
-
- return (IgniteInternalFuture<T>)futs;
- }
- else
- return ((List<IgniteInternalFuture>)futs).get(idx);
- }
-
- /**
* @return Futures size.
*/
- @SuppressWarnings("unchecked")
- protected int futuresCount() {
- synchronized (sync) {
- if (futs == null)
- return 0;
-
- if (futs instanceof IgniteInternalFuture)
- return 1;
-
- return ((Collection<IgniteInternalFuture>)futs).size();
+ protected int futuresSize() {
+ synchronized (futs) {
+ return futs.size();
}
}
@@ -331,11 +271,11 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
"cancelled", isCancelled(),
"err", error(),
"futs",
- F.viewReadOnly(futures(), new C1<IgniteInternalFuture<T>, String>() {
- @Override public String apply(IgniteInternalFuture<T> f) {
- return Boolean.toString(f.isDone());
- }
- })
+ F.viewReadOnly(futures(), new C1<IgniteInternalFuture<T>, String>() {
+ @Override public String apply(IgniteInternalFuture<T> f) {
+ return Boolean.toString(f.isDone());
+ }
+ })
);
}
}