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/11/25 14:08:49 UTC
ignite git commit: ignite-4285
Repository: ignite
Updated Branches:
refs/heads/ignite-4285 [created] 4e7c8d02e
ignite-4285
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4e7c8d02
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4e7c8d02
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4e7c8d02
Branch: refs/heads/ignite-4285
Commit: 4e7c8d02e871eaa1b37b79f3d22232fb384ca1d3
Parents: 56998e7
Author: sboikov <sb...@gridgain.com>
Authored: Fri Nov 25 11:57:10 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri Nov 25 16:34:32 2016 +0300
----------------------------------------------------------------------
.../processors/cache/GridCacheEntryEx.java | 3 +-
.../processors/cache/GridCacheMvcc.java | 113 +++++++---
.../cache/GridCacheMvccCandidate.java | 54 ++---
.../distributed/GridDistributedCacheEntry.java | 106 +---------
.../distributed/dht/GridDhtCacheEntry.java | 12 +-
.../distributed/dht/GridDhtLockFuture.java | 3 +-
.../dht/GridDhtTransactionalCacheAdapter.java | 1 -
.../colocated/GridDhtColocatedLockFuture.java | 8 +-
.../distributed/near/GridNearCacheEntry.java | 1 -
.../near/GridNearTransactionalCache.java | 1 -
.../cache/local/GridLocalCacheEntry.java | 16 +-
.../cache/local/GridLocalLockFuture.java | 2 +-
.../cache/transactions/IgniteTxManager.java | 4 +-
.../CacheSerializableTransactionsTest.java | 97 ++++++++-
.../cache/GridCacheMvccFlagsTest.java | 8 +-
.../cache/GridCacheMvccPartitionedSelfTest.java | 203 ++++++++++++++----
.../processors/cache/GridCacheMvccSelfTest.java | 212 +++++++++----------
.../processors/cache/GridCacheTestEntryEx.java | 15 +-
.../loadtests/hashmap/GridHashMapLoadTest.java | 2 +-
19 files changed, 503 insertions(+), 358 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
index 176fe77..d8194fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java
@@ -565,6 +565,7 @@ public interface GridCacheEntryEx {
* @param timeout Timeout for lock acquisition.
* @param serOrder Version for serializable transactions ordering.
* @param serReadVer Optional read entry version for optimistic serializable transaction.
+ * @param read Read lock flag.
* @return {@code True} if lock was acquired, {@code false} otherwise.
* @throws GridCacheEntryRemovedException If this entry is obsolete.
* @throws GridDistributedLockCancelledException If lock has been cancelled.
@@ -573,7 +574,7 @@ public interface GridCacheEntryEx {
long timeout,
@Nullable GridCacheVersion serOrder,
@Nullable GridCacheVersion serReadVer,
- boolean keepBinary
+ boolean read
) throws GridCacheEntryRemovedException, GridDistributedLockCancelledException;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvcc.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvcc.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvcc.java
index 507a2c9..f54aefd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvcc.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvcc.java
@@ -186,6 +186,29 @@ public final class GridCacheMvcc {
}
/**
+ * @param cand Existing candidate.
+ * @param newCand New candidate.
+ * @return {@code False} if new candidate can not be added.
+ */
+ private boolean compareSerializableVersion(GridCacheMvccCandidate cand, GridCacheMvccCandidate newCand) {
+ assert cand.serializable() && newCand.serializable();
+
+ GridCacheVersion candOrder = cand.serializableOrder();
+
+ assert candOrder != null : cand;
+
+ GridCacheVersion newCandOrder = newCand.serializableOrder();
+
+ assert newCandOrder != null : newCand;
+
+ int cmp = SER_VER_COMPARATOR.compare(candOrder, newCandOrder);
+
+ assert cmp != 0;
+
+ return cmp < 0;
+ }
+
+ /**
* @param cand Candidate to add.
* @return {@code False} if failed to add candidate and transaction should be cancelled.
*/
@@ -200,25 +223,34 @@ public final class GridCacheMvcc {
if (!cand.nearLocal()) {
if (!locs.isEmpty()) {
if (cand.serializable()) {
- GridCacheMvccCandidate last = locs.getLast();
+ Iterator<GridCacheMvccCandidate> it = locs.descendingIterator();
- if (!last.serializable())
- return false;
+ if (cand.read()) {
+ while (it.hasNext()) {
+ GridCacheMvccCandidate c = it.next();
- GridCacheVersion lastOrder = last.serializableOrder();
+ if (!c.serializable())
+ return false;
- assert lastOrder != null : last;
-
- GridCacheVersion candOrder = cand.serializableOrder();
-
- assert candOrder != null : cand;
-
- int cmp = SER_VER_COMPARATOR.compare(lastOrder, candOrder);
+ if (!c.read()) {
+ if (compareSerializableVersion(c, cand))
+ break;
+ else
+ return false;
+ }
+ }
+ }
+ else {
+ while (it.hasNext()) {
+ GridCacheMvccCandidate c = it.next();
- assert cmp != 0;
+ if (!c.serializable() || !compareSerializableVersion(c, cand))
+ return false;
- if (cmp > 0)
- return false;
+ if (!c.read())
+ break;
+ }
+ }
locs.addLast(cand);
@@ -517,7 +549,8 @@ public final class GridCacheMvcc {
reenter,
tx,
implicitSingle,
- /*dht-local*/false
+ /*dht-local*/false,
+ /*read*/false
);
}
@@ -533,6 +566,7 @@ public final class GridCacheMvcc {
* @param tx Transaction flag.
* @param implicitSingle Implicit flag.
* @param dhtLoc DHT local flag.
+ * @param read Read lock flag.
* @return New lock candidate if lock was added, or current owner if lock was reentered,
* or <tt>null</tt> if lock was owned by another thread and timeout is negative.
*/
@@ -547,7 +581,8 @@ public final class GridCacheMvcc {
boolean reenter,
boolean tx,
boolean implicitSingle,
- boolean dhtLoc) {
+ boolean dhtLoc,
+ boolean read) {
if (log.isDebugEnabled())
log.debug("Adding local candidate [mvcc=" + this + ", parent=" + parent + ", threadId=" + threadId +
", ver=" + ver + ", timeout=" + timeout + ", reenter=" + reenter + ", tx=" + tx + "]");
@@ -582,14 +617,14 @@ public final class GridCacheMvcc {
nearVer,
threadId,
ver,
- timeout,
/*local*/true,
/*reenter*/false,
tx,
implicitSingle,
/*near-local*/false,
dhtLoc,
- serOrder
+ serOrder,
+ read
);
if (serOrder == null) {
@@ -613,7 +648,6 @@ public final class GridCacheMvcc {
* @param otherNodeId Other node ID.
* @param threadId Thread ID.
* @param ver Lock version.
- * @param timeout Lock acquire timeout.
* @param tx Transaction flag.
* @param implicitSingle Implicit flag.
* @param nearLoc Near local flag.
@@ -625,7 +659,6 @@ public final class GridCacheMvcc {
@Nullable UUID otherNodeId,
long threadId,
GridCacheVersion ver,
- long timeout,
boolean tx,
boolean implicitSingle,
boolean nearLoc) {
@@ -636,14 +669,14 @@ public final class GridCacheMvcc {
null,
threadId,
ver,
- timeout,
/*local*/false,
/*reentry*/false,
tx,
implicitSingle,
nearLoc,
false,
- null
+ null,
+ /*read*/false
);
addRemote(cand);
@@ -659,7 +692,6 @@ public final class GridCacheMvcc {
* @param otherNodeId Other node ID.
* @param threadId Thread ID.
* @param ver Lock version.
- * @param timeout Lock acquire timeout.
* @param tx Transaction flag.
* @param implicitSingle Implicit flag.
* @return Add remote candidate.
@@ -669,7 +701,6 @@ public final class GridCacheMvcc {
@Nullable UUID otherNodeId,
long threadId,
GridCacheVersion ver,
- long timeout,
boolean tx,
boolean implicitSingle) {
GridCacheMvccCandidate cand = new GridCacheMvccCandidate(parent,
@@ -678,14 +709,14 @@ public final class GridCacheMvcc {
null,
threadId,
ver,
- timeout,
/*local*/true,
/*reentry*/false,
tx,
implicitSingle,
/*near loc*/true,
/*dht loc*/false,
- null);
+ null,
+ /*read*/false);
add0(cand);
@@ -942,14 +973,36 @@ public final class GridCacheMvcc {
if (locs != null) {
boolean first = true;
- for (ListIterator<GridCacheMvccCandidate> it = locs.listIterator(); it.hasNext(); ) {
+ ListIterator<GridCacheMvccCandidate> it = locs.listIterator();
+
+ while (it.hasNext()) {
GridCacheMvccCandidate cand = it.next();
if (first && cand.serializable()) {
- if (cand.owner() || !cand.ready())
- return;
+ if (!cand.read()) {
+ if (cand.owner() || !cand.ready())
+ return;
+
+ cand.setOwner();
+ }
+ else {
+ assert cand.serializable() : cand;
+
+ if (cand.ready() && !cand.owner())
+ cand.setOwner();
+
+ while (it.hasNext()) {
+ cand = it.next();
- cand.setOwner();
+ if (!cand.read())
+ break;
+
+ assert cand.serializable() : cand;
+
+ if (cand.ready() && !cand.owner())
+ cand.setOwner();
+ }
+ }
return;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccCandidate.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccCandidate.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccCandidate.java
index f1c1b83..a08a21f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccCandidate.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccCandidate.java
@@ -43,6 +43,7 @@ import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate
import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.LOCAL;
import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.NEAR_LOCAL;
import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.OWNER;
+import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.READ;
import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.READY;
import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.REENTRY;
import static org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate.Mask.REMOVED;
@@ -69,14 +70,6 @@ public class GridCacheMvccCandidate implements Externalizable,
@GridToStringInclude
private GridCacheVersion ver;
- /** Maximum wait time. */
- @GridToStringInclude
- private long timeout;
-
- /** Candidate timestamp. */
- @GridToStringInclude
- private long ts;
-
/** Thread ID. */
@GridToStringInclude
private long threadId;
@@ -143,7 +136,6 @@ public class GridCacheMvccCandidate implements Externalizable,
* @param otherVer Other version.
* @param threadId Requesting thread ID.
* @param ver Cache version.
- * @param timeout Maximum wait time.
* @param loc {@code True} if the lock is local.
* @param reentry {@code True} if candidate is for reentry.
* @param tx Transaction flag.
@@ -151,6 +143,7 @@ public class GridCacheMvccCandidate implements Externalizable,
* @param nearLoc Near-local flag.
* @param dhtLoc DHT local flag.
* @param serOrder Version for serializable transactions ordering.
+ * @param read Read lock flag.
*/
public GridCacheMvccCandidate(
GridCacheEntryEx parent,
@@ -159,18 +152,19 @@ public class GridCacheMvccCandidate implements Externalizable,
@Nullable GridCacheVersion otherVer,
long threadId,
GridCacheVersion ver,
- long timeout,
boolean loc,
boolean reentry,
boolean tx,
boolean singleImplicit,
boolean nearLoc,
boolean dhtLoc,
- @Nullable GridCacheVersion serOrder
+ @Nullable GridCacheVersion serOrder,
+ boolean read
) {
assert nodeId != null;
assert ver != null;
assert parent != null;
+ assert !read || serOrder != null;
this.parent = parent;
this.nodeId = nodeId;
@@ -178,7 +172,6 @@ public class GridCacheMvccCandidate implements Externalizable,
this.otherVer = otherVer;
this.threadId = threadId;
this.ver = ver;
- this.timeout = timeout;
this.serOrder = serOrder;
mask(LOCAL, loc);
@@ -187,8 +180,7 @@ public class GridCacheMvccCandidate implements Externalizable,
mask(SINGLE_IMPLICIT, singleImplicit);
mask(NEAR_LOCAL, nearLoc);
mask(DHT_LOCAL, dhtLoc);
-
- ts = U.currentTimeMillis();
+ mask(READ, read);
id = IDGEN.incrementAndGet();
}
@@ -245,14 +237,14 @@ public class GridCacheMvccCandidate implements Externalizable,
otherVer,
threadId,
ver,
- timeout,
local(),
/*reentry*/true,
tx(),
singleImplicit(),
nearLocal(),
dhtLocal(),
- serializableOrder());
+ serializableOrder(),
+ read());
reentry.topVer = topVer;
@@ -411,20 +403,6 @@ public class GridCacheMvccCandidate implements Externalizable,
}
/**
- * @return Maximum wait time.
- */
- public long timeout() {
- return timeout;
- }
-
- /**
- * @return Timestamp at the time of entering pending set.
- */
- public long timestamp() {
- return ts;
- }
-
- /**
* @return {@code True} if lock is local.
*/
public boolean local() {
@@ -474,6 +452,13 @@ public class GridCacheMvccCandidate implements Externalizable,
}
/**
+ * @return Read lock flag.
+ */
+ public boolean read() {
+ return READ.get(flags());
+ }
+
+ /**
* @return {@code True} if this candidate is a reentry.
*/
public boolean reentry() {
@@ -610,7 +595,6 @@ public class GridCacheMvccCandidate implements Externalizable,
ver.writeExternal(out);
}
- out.writeLong(timeout);
out.writeLong(threadId);
out.writeLong(id);
out.writeShort(flags());
@@ -626,7 +610,6 @@ public class GridCacheMvccCandidate implements Externalizable,
ver.readExternal(in);
}
- timeout = in.readLong();
threadId = in.readLong();
id = in.readLong();
@@ -635,8 +618,6 @@ public class GridCacheMvccCandidate implements Externalizable,
mask(OWNER, OWNER.get(flags));
mask(USED, USED.get(flags));
mask(TX, TX.get(flags));
-
- ts = U.currentTimeMillis();
}
/** {@inheritDoc} */
@@ -719,7 +700,10 @@ public class GridCacheMvccCandidate implements Externalizable,
NEAR_LOCAL(0x200),
/** */
- REMOVED(0x400);
+ REMOVED(0x400),
+
+ /** */
+ READ(0x800);
/** All mask values. */
private static final Mask[] MASKS = values();
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
index 2d1b02e..68031c6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheEntry.java
@@ -168,7 +168,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
* @param otherNodeId Other node ID.
* @param threadId Thread ID.
* @param ver Lock version.
- * @param timeout Lock acquire timeout.
* @param tx Transaction flag.
* @param implicitSingle Implicit flag.
* @param owned Owned candidate version.
@@ -180,7 +179,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
@Nullable UUID otherNodeId,
long threadId,
GridCacheVersion ver,
- long timeout,
boolean tx,
boolean implicitSingle,
@Nullable GridCacheVersion owned
@@ -214,7 +212,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
otherNodeId,
threadId,
ver,
- timeout,
tx,
implicitSingle,
/*near-local*/false
@@ -242,61 +239,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
}
/**
- * Adds new lock candidate.
- *
- * @param cand Remote lock candidate.
- * @throws GridDistributedLockCancelledException If lock has been canceled.
- * @throws GridCacheEntryRemovedException If this entry is obsolete.
- */
- public void addRemote(GridCacheMvccCandidate cand) throws GridDistributedLockCancelledException,
- GridCacheEntryRemovedException {
-
- CacheObject val;
-
- GridCacheMvccCandidate prev;
- GridCacheMvccCandidate owner;
-
- synchronized (this) {
- cand.parent(this);
-
- // Check removed locks prior to obsolete flag.
- checkRemoved(cand.version());
-
- checkObsolete();
-
- GridCacheMvcc mvcc = mvccExtras();
-
- if (mvcc == null) {
- mvcc = new GridCacheMvcc(cctx);
-
- mvccExtras(mvcc);
- }
-
- boolean emptyBefore = mvcc.isEmpty();
-
- prev = mvcc.anyOwner();
-
- mvcc.addRemote(cand);
-
- owner = mvcc.anyOwner();
-
- boolean emptyAfter = mvcc.isEmpty();
-
- checkCallbacks(emptyBefore, emptyAfter);
-
- val = this.val;
-
- refreshRemotes();
-
- if (emptyAfter)
- mvccExtras(null);
- }
-
- // This call must be outside of synchronization.
- checkOwnerChanged(prev, owner, val);
- }
-
- /**
* Removes all lock candidates for node.
*
* @param nodeId ID of node to remove locks from.
@@ -568,51 +510,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
}
/**
- * Reorders completed versions.
- *
- * @param baseVer Base version for reordering.
- * @param committedVers Completed versions.
- * @param rolledbackVers Rolled back versions.
- * @throws GridCacheEntryRemovedException If entry has been removed.
- */
- public void orderCompleted(GridCacheVersion baseVer, Collection<GridCacheVersion> committedVers,
- Collection<GridCacheVersion> rolledbackVers)
- throws GridCacheEntryRemovedException {
- if (!F.isEmpty(committedVers) || !F.isEmpty(rolledbackVers)) {
- GridCacheMvccCandidate prev = null;
- GridCacheMvccCandidate owner = null;
-
- CacheObject val;
-
- synchronized (this) {
- checkObsolete();
-
- GridCacheMvcc mvcc = mvccExtras();
-
- if (mvcc != null) {
- prev = mvcc.anyOwner();
-
- boolean emptyBefore = mvcc.isEmpty();
-
- owner = mvcc.orderCompleted(baseVer, committedVers, rolledbackVers);
-
- boolean emptyAfter = mvcc.isEmpty();
-
- checkCallbacks(emptyBefore, emptyAfter);
-
- if (emptyAfter)
- mvccExtras(null);
- }
-
- val = this.val;
- }
-
- // This call must be made outside of synchronization.
- checkOwnerChanged(prev, owner, val);
- }
- }
-
- /**
*
* @param lockVer Done version.
* @param baseVer Base version.
@@ -743,7 +640,7 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
long timeout,
@Nullable GridCacheVersion serOrder,
GridCacheVersion serReadVer,
- boolean keepBinary
+ boolean read
) throws GridCacheEntryRemovedException, GridDistributedLockCancelledException {
if (tx.local())
// Null is returned if timeout is negative and there is other lock owner.
@@ -762,7 +659,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
tx.otherNodeId(),
tx.threadId(),
tx.xidVersion(),
- tx.timeout(),
/*tx*/true,
tx.implicitSingle(),
tx.ownedVersion(txKey())
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
index b0b0a7e..581f636 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtCacheEntry.java
@@ -185,7 +185,8 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
long timeout,
boolean reenter,
boolean tx,
- boolean implicitSingle)
+ boolean implicitSingle,
+ boolean read)
throws GridCacheEntryRemovedException, GridDistributedLockCancelledException {
assert serReadVer == null || serOrder != null;
assert !reenter || serOrder == null;
@@ -226,7 +227,8 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
reenter,
tx,
implicitSingle,
- /*dht-local*/true
+ /*dht-local*/true,
+ read
);
if (cand == null)
@@ -264,7 +266,7 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
long timeout,
@Nullable GridCacheVersion serOrder,
GridCacheVersion serReadVer,
- boolean keepBinary
+ boolean read
) throws GridCacheEntryRemovedException, GridDistributedLockCancelledException {
if (tx.local()) {
GridDhtTxLocalAdapter dhtTx = (GridDhtTxLocalAdapter)tx;
@@ -281,7 +283,8 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
timeout,
/*reenter*/false,
/*tx*/true,
- tx.implicitSingle()) != null;
+ tx.implicitSingle(),
+ read) != null;
}
try {
@@ -290,7 +293,6 @@ public class GridDhtCacheEntry extends GridDistributedCacheEntry {
tx.otherNodeId(),
tx.threadId(),
tx.xidVersion(),
- tx.timeout(),
/*tx*/true,
tx.implicit(),
null);
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/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 b005b29..b3a1394 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
@@ -396,7 +396,8 @@ public final class GridDhtLockFuture extends GridCompoundIdentityFuture<Boolean>
timeout,
/*reenter*/false,
inTx(),
- implicitSingle()
+ implicitSingle(),
+ false
);
if (c == null && timeout < 0) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index 6b437b1..01bc4e0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -273,7 +273,6 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach
nodeId,
req.threadId(),
req.version(),
- req.timeout(),
tx != null,
tx != null && tx.implicitSingle(),
null
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/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 b0eea01..5557d34 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
@@ -312,14 +312,14 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
null,
threadId,
lockVer,
- timeout,
true,
tx.entry(txKey).locked(),
inTx(),
inTx() && tx.implicitSingle(),
false,
false,
- null);
+ null,
+ false);
cand.topologyVersion(topVer);
}
@@ -332,14 +332,14 @@ public final class GridDhtColocatedLockFuture extends GridCompoundIdentityFuture
null,
threadId,
lockVer,
- timeout,
true,
false,
inTx(),
inTx() && tx.implicitSingle(),
false,
false,
- null);
+ null,
+ false);
cand.topologyVersion(topVer);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheEntry.java
index d495f83..7cd4196 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearCacheEntry.java
@@ -520,7 +520,6 @@ public class GridNearCacheEntry extends GridDistributedCacheEntry {
dhtNodeId,
threadId,
ver,
- timeout,
tx,
implicitSingle);
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
index cf5d2e2..d61915b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -356,7 +356,6 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
nodeId,
req.threadId(),
req.version(),
- req.timeout(),
tx != null,
tx != null && tx.implicitSingle(),
req.owned(entry.key())
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCacheEntry.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCacheEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCacheEntry.java
index 10fa116..1aa5017 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCacheEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalCacheEntry.java
@@ -46,7 +46,7 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
* @param hash Key hash value.
* @param val Entry value.
*/
- public GridLocalCacheEntry(
+ GridLocalCacheEntry(
GridCacheContext ctx,
KeyCacheObject key,
int hash,
@@ -71,10 +71,11 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
* @param reenter Reentry flag.
* @param tx Transaction flag.
* @param implicitSingle Implicit transaction flag.
+ * @param read Read lock flag.
* @return New candidate.
* @throws GridCacheEntryRemovedException If entry has been removed.
*/
- @Nullable public GridCacheMvccCandidate addLocal(
+ @Nullable GridCacheMvccCandidate addLocal(
long threadId,
GridCacheVersion ver,
@Nullable GridCacheVersion serOrder,
@@ -83,7 +84,7 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
boolean reenter,
boolean tx,
boolean implicitSingle,
- boolean keepBinary
+ boolean read
) throws GridCacheEntryRemovedException {
GridCacheMvccCandidate prev;
GridCacheMvccCandidate cand;
@@ -121,7 +122,8 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
reenter,
tx,
implicitSingle,
- /*dht-local*/false
+ /*dht-local*/false,
+ read
);
owner = mvcc.localOwner();
@@ -141,7 +143,7 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
// Event notification.
if (cctx.events().isRecordable(EVT_CACHE_OBJECT_LOCKED))
cctx.events().addEvent(partition(), key, cand.nodeId(), cand, EVT_CACHE_OBJECT_LOCKED, val, hasVal,
- val, hasVal, null, null, null, keepBinary);
+ val, hasVal, null, null, null, true);
}
checkOwnerChanged(prev, owner);
@@ -181,7 +183,7 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
long timeout,
@Nullable GridCacheVersion serOrder,
GridCacheVersion serReadVer,
- boolean keepBinary)
+ boolean read)
throws GridCacheEntryRemovedException {
GridCacheMvccCandidate cand = addLocal(
tx.threadId(),
@@ -192,7 +194,7 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
/*reenter*/false,
/*tx*/true,
tx.implicitSingle(),
- keepBinary
+ read
);
if (cand != null) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
index c5bd71a..8e224c8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/local/GridLocalLockFuture.java
@@ -231,7 +231,7 @@ public final class GridLocalLockFuture<K, V> extends GridFutureAdapter<Boolean>
!inTx(),
inTx(),
implicitSingle(),
- true
+ false
);
entries.add(entry);
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index c72d7f7..faadf27 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -53,7 +53,6 @@ import org.apache.ignite.internal.processors.cache.GridCacheMvccFuture;
import org.apache.ignite.internal.processors.cache.GridCacheReturnCompletableWrapper;
import org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter;
import org.apache.ignite.internal.processors.cache.GridDeferredAckMessageSender;
-import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheMappedVersion;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheTxFinishSync;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheTxRecoveryFuture;
@@ -105,6 +104,7 @@ import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
import static org.apache.ignite.internal.GridTopic.TOPIC_TX;
import static org.apache.ignite.internal.managers.communication.GridIoPolicy.SYSTEM_POOL;
+import static org.apache.ignite.internal.processors.cache.GridCacheOperation.READ;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isNearEnabled;
import static org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx.FinalizationStatus.RECOVERY_FINISH;
import static org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx.FinalizationStatus.USER_FINISH;
@@ -1615,7 +1615,7 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
assert serReadVer == null || (tx.optimistic() && tx.serializable()) : txEntry1;
- if (!entry1.tmLock(tx, timeout, serOrder, serReadVer, txEntry1.keepBinary())) {
+ if (!entry1.tmLock(tx, timeout, serOrder, serReadVer, txEntry1.op() == READ)) {
// Unlock locks locked so far.
for (IgniteTxEntry txEntry2 : entries) {
if (txEntry2 == txEntry1)
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
index 6a73f79..95750dc 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheSerializableTransactionsTest.java
@@ -590,7 +590,7 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
/**
* @throws Exception If failed.
*/
- public void testTxCommitReadOnlyGetAll(boolean needVer) throws Exception {
+ private void testTxCommitReadOnlyGetAll(boolean needVer) throws Exception {
Ignite ignite0 = ignite(0);
final IgniteTransactions txs = ignite0.transactions();
@@ -2446,6 +2446,101 @@ public class CacheSerializableTransactionsTest extends GridCommonAbstractTest {
/**
* @throws Exception If failed.
*/
+ public void testNoReadLockConflict() throws Exception {
+ checkNoReadLockConflict(false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testNoReadLockConflictGetEntry() throws Exception {
+ checkNoReadLockConflict(true);
+ }
+
+ /**
+ * @param entry If {@code true} then uses 'getEntry' to read value, otherwise uses 'get'.
+ * @throws Exception If failed.
+ */
+ private void checkNoReadLockConflict(final boolean entry) throws Exception {
+ Ignite ignite0 = ignite(0);
+
+ for (CacheConfiguration<Integer, Integer> ccfg : cacheConfigurations()) {
+ logCacheInfo(ccfg);
+
+ final AtomicInteger putKey = new AtomicInteger(1_000_000);
+
+ final int THREADS = 64;
+
+ ignite0.createCache(ccfg);
+
+ try {
+ final Ignite ignite = ignite0;
+ final IgniteCache<Integer, Integer> cache = ignite.cache(ccfg.getName());
+
+ List<Integer> readKeys = testKeys(cache);
+
+ for (final Integer readKey : readKeys) {
+ final CyclicBarrier barrier = new CyclicBarrier(THREADS);
+
+ cache.put(readKey, 0);
+
+ GridTestUtils.runMultiThreaded(new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ try (Transaction tx = ignite.transactions().txStart(OPTIMISTIC, SERIALIZABLE)) {
+ if (entry)
+ cache.get(readKey);
+ else
+ cache.getEntry(readKey);
+
+ barrier.await();
+
+ cache.put(putKey.incrementAndGet(), 0);
+
+ tx.commit();
+ }
+
+ return null;
+ }
+ }, THREADS, "test-thread");
+ }
+ }
+ finally {
+ destroyCache(ccfg.getName());
+ }
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testReadLockPessimisticTxConflict() throws Exception {
+ // TODO: no conflict for write, read conflict with pessimistic tx.
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testReadWriteTxConflict() throws Exception {
+ // TODO: no conflict for read, conflict for write.
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testNoReadLockConflictMultiNode() throws Exception {
+ // TODO
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testReadWriteTransactionsNoDeadlock() throws Exception {
+ // TODO
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
public void testNearCacheReaderUpdate() throws Exception {
Ignite ignite0 = ignite(0);
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java
index 234f362..ff2d62d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccFlagsTest.java
@@ -82,14 +82,14 @@ public class GridCacheMvccFlagsTest extends GridCommonAbstractTest {
ver,
1,
ver,
- 0,
true,
true,
true,
true,
true,
true,
- null
+ null,
+ false
);
c.setOwner();
@@ -123,14 +123,14 @@ public class GridCacheMvccFlagsTest extends GridCommonAbstractTest {
ver,
1,
ver,
- 0,
false,
false,
false,
false,
false,
false,
- null
+ null,
+ false
);
short flags = c.flags();
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java
index 1b97663..f00eae8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccPartitionedSelfTest.java
@@ -29,6 +29,7 @@ import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
@@ -37,6 +38,9 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED;
* Test cases for multi-threaded tests in partitioned cache.
*/
public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final UUID nodeId = UUID.randomUUID();
+
/** Grid. */
private IgniteKernal grid;
@@ -94,8 +98,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver1 = version(1);
GridCacheVersion ver2 = version(2);
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c2 = entry.addNearLocal(node1, 1, ver2, 0, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c2 = entry.addNearLocal(node1, 1, ver2, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -128,8 +132,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver1 = version(1);
GridCacheVersion ver2 = version(2);
- GridCacheMvccCandidate c1 = entry.addNearLocal(node1, 1, ver1, 0, true);
- GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, 0, false, true);
+ GridCacheMvccCandidate c1 = entry.addNearLocal(node1, 1, ver1, true);
+ GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -161,8 +165,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver1 = version(1);
GridCacheVersion ver2 = version(2);
- GridCacheMvccCandidate c1 = entry.addNearLocal(node1, 1, ver1, 0, true);
- GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, 0, false, true);
+ GridCacheMvccCandidate c1 = entry.addNearLocal(node1, 1, ver1, true);
+ GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -194,8 +198,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver1 = version(1);
GridCacheVersion ver2 = version(2);
- GridCacheMvccCandidate c1 = entry.addNearLocal(node1, 1, ver1, 0, true);
- GridCacheMvccCandidate c2 = entry.addNearLocal(node1, 1, ver2, 0, true);
+ GridCacheMvccCandidate c1 = entry.addNearLocal(node1, 1, ver1, true);
+ GridCacheMvccCandidate c2 = entry.addNearLocal(node1, 1, ver2, true);
entry.readyNearLocal(ver2, ver2, empty(), empty(), empty());
@@ -224,8 +228,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver1 = version(1);
GridCacheVersion ver2 = version(2);
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c2 = entry.addNearLocal(node1, 1, ver2, 0, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c2 = entry.addNearLocal(node1, 1, ver2, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -263,11 +267,11 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver0 = version(0);
GridCacheVersion ver1 = version(1);
- entry.addNearLocal(node1, 1, ver1, 0, true);
+ entry.addNearLocal(node1, 1, ver1, true);
entry.readyNearLocal(ver1, ver1, empty(), empty(), Collections.singletonList(ver0));
- entry.addRemote(node1, 1, ver0, 0, false, true);
+ entry.addRemote(node1, 1, ver0, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -297,13 +301,13 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(2);
GridCacheVersion ver3 = version(3);
- GridCacheMvccCandidate c3 = entry.addNearLocal(node1, 1, ver3, 0, true);
+ GridCacheMvccCandidate c3 = entry.addNearLocal(node1, 1, ver3, true);
entry.readyNearLocal(ver3, ver3, empty(), empty(), Arrays.asList(ver0, ver1, ver2));
- GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, 0, false, true);
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c0 = entry.addRemote(node1, 1, ver0, 0, false, true);
+ GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, false, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c0 = entry.addRemote(node1, 1, ver0, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
@@ -340,13 +344,13 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(2);
GridCacheVersion ver3 = version(3);
- GridCacheMvccCandidate c3 = entry.addNearLocal(node1, 1, ver3, 0, true);
- entry.addNearLocal(node1, 1, ver2, 0, true);
+ GridCacheMvccCandidate c3 = entry.addNearLocal(node1, 1, ver3, true);
+ entry.addNearLocal(node1, 1, ver2, true);
entry.readyNearLocal(ver3, ver3, empty(), empty(), Arrays.asList(ver0, ver1, ver2));
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c0 = entry.addRemote(node1, 1, ver0, 0, false, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c0 = entry.addRemote(node1, 1, ver0, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
@@ -386,12 +390,12 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver5 = version(5);
GridCacheVersion ver6 = version(6);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node1, 1, ver2, 0, false, true);
- GridCacheMvccCandidate c3 = entry.addNearLocal(node1, 1, ver3, 0, true);
- GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, 0, false, true);
- entry.addRemote(node1, 1, ver5, 0, false, true);
- entry.addRemote(node1, 1, ver6, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node1, 1, ver2, false, true);
+ GridCacheMvccCandidate c3 = entry.addNearLocal(node1, 1, ver3, true);
+ GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, false, true);
+ entry.addRemote(node1, 1, ver5, false, true);
+ entry.addRemote(node1, 1, ver6, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
@@ -442,9 +446,9 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(20);
GridCacheVersion ver3 = version(30);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addNearLocal(node1, 1, nearVer2, 0, true);
- entry.addRemote(node1, 1, ver3, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addNearLocal(node1, 1, nearVer2, true);
+ entry.addRemote(node1, 1, ver3, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -480,9 +484,9 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(20);
GridCacheVersion ver3 = version(30);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addNearLocal(node1, 1, nearVer2, 0, true);
- entry.addRemote(node1, 1, ver3, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addNearLocal(node1, 1, nearVer2, true);
+ entry.addRemote(node1, 1, ver3, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -525,9 +529,9 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(20);
GridCacheVersion ver3 = version(30);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addNearLocal(node1, 1, nearVer2, 0, true);
- entry.addRemote(node1, 1, ver3, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addNearLocal(node1, 1, nearVer2, true);
+ entry.addRemote(node1, 1, ver3, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -570,9 +574,9 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(20);
GridCacheVersion ver3 = version(30);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addNearLocal(node1, 1, nearVer2, 0, true);
- entry.addRemote(node1, 1, ver3, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addNearLocal(node1, 1, nearVer2, true);
+ entry.addRemote(node1, 1, ver3, false, true);
Collection<GridCacheMvccCandidate> rmtCands = entry.remoteMvccSnapshot();
Collection<GridCacheMvccCandidate> nearLocCands = entry.localCandidates();
@@ -597,6 +601,111 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
/**
* @throws Exception If failed.
*/
+ public void testSerializableReadLocks() throws Exception {
+ GridCacheAdapter<String, String> cache = grid.internalCache();
+
+ GridCacheVersion serOrder1 = new GridCacheVersion(0, 0, 10, 1);
+ GridCacheVersion serOrder2 = new GridCacheVersion(0, 0, 20, 1);
+ GridCacheVersion serOrder3 = new GridCacheVersion(0, 0, 15, 1);
+
+ {
+ GridCacheMvcc mvcc = new GridCacheMvcc(cache.context());
+
+ GridCacheTestEntryEx e = new GridCacheTestEntryEx(cache.context(), "1");
+
+ GridCacheMvccCandidate cand1 = addLocal(mvcc, e, version(1), serOrder1, true);
+
+ assertNotNull(cand1);
+
+ GridCacheMvccCandidate cand2 = addLocal(mvcc, e, version(2), serOrder2, true);
+
+ assertNotNull(cand2);
+
+ GridCacheMvccCandidate cand3 = addLocal(mvcc, e, version(3), serOrder3, false);
+
+ assertNull(cand3);
+
+ cand3 = addLocal(mvcc, e, version(3), serOrder3, true);
+
+ assertNotNull(cand3);
+ }
+
+ {
+ GridCacheMvcc mvcc = new GridCacheMvcc(cache.context());
+
+ GridCacheTestEntryEx e = new GridCacheTestEntryEx(cache.context(), "1");
+
+ GridCacheMvccCandidate cand1 = addLocal(mvcc, e, version(1), serOrder2, true);
+
+ assertNotNull(cand1);
+
+ GridCacheMvccCandidate cand2 = addLocal(mvcc, e, version(2), serOrder1, true);
+
+ assertNotNull(cand2);
+
+ GridCacheMvccCandidate cand3 = addLocal(mvcc, e, version(3), serOrder3, false);
+
+ assertNull(cand3);
+
+ cand3 = addLocal(mvcc, e, version(3), serOrder3, true);
+
+ assertNotNull(cand3);
+ }
+
+ {
+ GridCacheMvcc mvcc = new GridCacheMvcc(cache.context());
+
+ GridCacheTestEntryEx e = new GridCacheTestEntryEx(cache.context(), "1");
+
+ GridCacheMvccCandidate cand1 = addLocal(mvcc, e, version(1), serOrder3, false);
+
+ assertNotNull(cand1);
+
+ GridCacheMvccCandidate cand2 = addLocal(mvcc, e, version(2), serOrder2, true);
+
+ assertNotNull(cand2);
+
+ GridCacheMvccCandidate cand3 = addLocal(mvcc, e, version(3), serOrder1, true);
+
+ assertNull(cand3);
+
+ cand3 = addLocal(mvcc, e, version(3), serOrder1, false);
+
+ assertNull(cand3);
+ }
+ }
+
+ /**
+ * @param mvcc Mvcc.
+ * @param e Entry.
+ * @param ver Version.
+ * @param serOrder Serializable tx version.
+ * @param read Read lock flag.
+ * @return Candidate.
+ */
+ @Nullable private GridCacheMvccCandidate addLocal(GridCacheMvcc mvcc,
+ GridCacheEntryEx e,
+ GridCacheVersion ver,
+ GridCacheVersion serOrder,
+ boolean read) {
+ return mvcc.addLocal(e,
+ nodeId,
+ null,
+ 1,
+ ver,
+ 0,
+ serOrder,
+ false,
+ true,
+ false,
+ true,
+ read
+ );
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
public void testSerializableLocks() throws Exception {
checkSerializableAdd(false);
@@ -627,7 +736,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
false,
true,
false,
- true
+ true,
+ false
);
assertNotNull(cand1);
@@ -642,7 +752,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
false,
true,
false,
- true
+ true,
+ false
);
assertNull(cand2);
@@ -681,7 +792,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
false,
true,
false,
- true
+ true,
+ false
);
assertNotNull(cand1);
@@ -696,7 +808,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
false,
true,
false,
- true
+ true,
+ false
);
assertNotNull(cand2);
@@ -711,7 +824,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
false,
true,
false,
- true
+ true,
+ false
);
assertNull(cand3);
@@ -726,7 +840,8 @@ public class GridCacheMvccPartitionedSelfTest extends GridCommonAbstractTest {
false,
true,
false,
- true
+ true,
+ false
);
assertNotNull(cand4);
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
index 59f9a9d..f46b290 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheMvccSelfTest.java
@@ -95,14 +95,14 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
version(1),
123,
version(2),
- 123,
/*local*/false,
/*reentry*/false,
true,
false,
false,
false,
- null
+ null,
+ false
);
Marshaller marshaller = getTestResources().getMarshaller();
@@ -129,14 +129,14 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver4 = version(4);
GridCacheVersion ver5 = version(5);
- entry.addRemote(node1, 1, ver1, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
Collection<GridCacheMvccCandidate> cands = entry.remoteMvccSnapshot();
assert cands.size() == 1;
assert cands.iterator().next().version().equals(ver1);
- entry.addRemote(node2, 5, ver5, 0, false, true);
+ entry.addRemote(node2, 5, ver5, false, true);
cands = entry.remoteMvccSnapshot();
@@ -147,7 +147,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
// Check order.
checkOrder(cands, ver1, ver5);
- entry.addRemote(node1, 3, ver3, 0, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
cands = entry.remoteMvccSnapshot();
@@ -162,7 +162,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
checkDone(entry.candidate(ver3));
- entry.addRemote(node1, 2, ver2, 0, false, true);
+ entry.addRemote(node1, 2, ver2, false, true);
cands = entry.remoteMvccSnapshot();
@@ -197,7 +197,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
checkDone(entry.candidate(ver5));
- entry.addRemote(node1, 4, ver4, 0, false, true);
+ entry.addRemote(node1, 4, ver4, false, true);
cands = entry.remoteMvccSnapshot();
@@ -278,10 +278,10 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver3 = version(3);
GridCacheVersion ver4 = version(4);
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, 0, false, true);
- GridCacheMvccCandidate c3 = entry.addRemote(node1, 1, ver3, 0, false, true);
- GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, 0, false, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, false, true);
+ GridCacheMvccCandidate c3 = entry.addRemote(node1, 1, ver3, false, true);
+ GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, false, true);
GridCacheMvccCandidate[] candArr = new GridCacheMvccCandidate[] {c1, c2, c3, c4};
@@ -322,12 +322,12 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver5 = version(5);
GridCacheVersion ver6 = version(6);
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, 0, false, true);
- GridCacheMvccCandidate c3 = entry.addRemote(node1, 1, ver3, 0, false, true);
- GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, 0, false, true);
- GridCacheMvccCandidate c5 = entry.addRemote(node1, 1, ver5, 0, false, true);
- GridCacheMvccCandidate c6 = entry.addRemote(node1, 1, ver6, 0, false, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, false, true);
+ GridCacheMvccCandidate c3 = entry.addRemote(node1, 1, ver3, false, true);
+ GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, false, true);
+ GridCacheMvccCandidate c5 = entry.addRemote(node1, 1, ver5, false, true);
+ GridCacheMvccCandidate c6 = entry.addRemote(node1, 1, ver6, false, true);
GridCacheMvccCandidate[] candArr = new GridCacheMvccCandidate[] {c1, c2, c3, c4, c5, c6};
@@ -369,13 +369,13 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver5 = version(5);
GridCacheVersion ver6 = version(6);
- GridCacheMvccCandidate c0 = entry.addRemote(node1, 1, ver0, 0, false, true);
- GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, 0, false, true);
- GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, 0, false, true);
- GridCacheMvccCandidate c3 = entry.addRemote(node1, 1, ver3, 0, false, true);
- GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, 0, false, true);
- GridCacheMvccCandidate c5 = entry.addRemote(node1, 1, ver5, 0, false, true);
- GridCacheMvccCandidate c6 = entry.addRemote(node1, 1, ver6, 0, false, true);
+ GridCacheMvccCandidate c0 = entry.addRemote(node1, 1, ver0, false, true);
+ GridCacheMvccCandidate c1 = entry.addRemote(node1, 1, ver1, false, true);
+ GridCacheMvccCandidate c2 = entry.addRemote(node1, 1, ver2, false, true);
+ GridCacheMvccCandidate c3 = entry.addRemote(node1, 1, ver3, false, true);
+ GridCacheMvccCandidate c4 = entry.addRemote(node1, 1, ver4, false, true);
+ GridCacheMvccCandidate c5 = entry.addRemote(node1, 1, ver5, false, true);
+ GridCacheMvccCandidate c6 = entry.addRemote(node1, 1, ver6, false, true);
GridCacheMvccCandidate[] candArr = new GridCacheMvccCandidate[] {c0, c1, c2, c3, c4, c5, c6};
@@ -486,7 +486,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver2 = version(2);
GridCacheVersion ver3 = version(3);
- entry.addRemote(nodeId, 1, ver2, 0, false, true);
+ entry.addRemote(nodeId, 1, ver2, false, true);
entry.addLocal(3, ver3, 0, false, true);
@@ -529,15 +529,15 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver7 = version(7);
GridCacheVersion ver8 = version(8);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node2, 2, ver2, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
- entry.addRemote(node1, 5, ver5, 0, false, true);
- entry.addRemote(node2, 7, ver7, 0, false, true);
- entry.addRemote(node2, 8, ver8, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node2, 2, ver2, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
+ entry.addRemote(node1, 5, ver5, false, true);
+ entry.addRemote(node2, 7, ver7, false, true);
+ entry.addRemote(node2, 8, ver8, false, true);
- GridCacheMvccCandidate doomed = entry.addRemote(node2, 6, ver6, 0, false, true);
+ GridCacheMvccCandidate doomed = entry.addRemote(node2, 6, ver6, false, true);
// No reordering happens.
checkOrder(entry.remoteMvccSnapshot(), ver1, ver2, ver3, ver4, ver5, ver7, ver8, ver6);
@@ -581,13 +581,13 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver6 = version(6);
GridCacheVersion ver7 = version(7);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node2, 2, ver2, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
- entry.addRemote(node1, 5, ver5, 0, false, true);
- entry.addRemote(node2, 6, ver6, 0, false, true);
- entry.addRemote(node2, 7, ver7, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node2, 2, ver2, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
+ entry.addRemote(node1, 5, ver5, false, true);
+ entry.addRemote(node2, 6, ver6, false, true);
+ entry.addRemote(node2, 7, ver7, false, true);
List<GridCacheVersion> committed = Arrays.asList(ver4, ver6, ver2);
@@ -623,13 +623,13 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver6 = version(6);
GridCacheVersion ver7 = version(7);
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node2, 2, ver2, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
- entry.addRemote(node1, 5, ver5, 0, false, true);
- entry.addRemote(node2, 6, ver6, 0, false, true);
- entry.addRemote(node2, 7, ver7, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node2, 2, ver2, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
+ entry.addRemote(node1, 5, ver5, false, true);
+ entry.addRemote(node2, 6, ver6, false, true);
+ entry.addRemote(node2, 7, ver7, false, true);
List<GridCacheVersion> completed = Arrays.asList(ver4, ver6);
@@ -669,11 +669,11 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver6 = version(6);
GridCacheVersion ver7 = version(7);
- entry.addRemote(node1, 1, ver1, 0, false, false);
- entry.addRemote(node2, 2, ver2, 0, false, false);
- entry.addRemote(node1, 3, ver3, 0, false, false);
- entry.addRemote(node2, 4, ver4, 0, false, false);
- entry.addRemote(node1, 5, ver5, 0, false, false);
+ entry.addRemote(node1, 1, ver1, false, false);
+ entry.addRemote(node2, 2, ver2, false, false);
+ entry.addRemote(node1, 3, ver3, false, false);
+ entry.addRemote(node2, 4, ver4, false, false);
+ entry.addRemote(node1, 5, ver5, false, false);
List<GridCacheVersion> committed = Arrays.asList(ver6, ver7);
@@ -708,13 +708,13 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver6 = version(6);
GridCacheVersion ver7 = version(7);
- entry.addRemote(node1, 1, ver1, 0, false, false);
- entry.addRemote(node2, 2, ver2, 0, false, false);
- entry.addRemote(node1, 3, ver3, 0, false, false);
- entry.addRemote(node2, 4, ver4, 0, false, false);
- entry.addRemote(node1, 5, ver5, 0, false, false);
- entry.addRemote(node2, 6, ver6, 0, false, false);
- entry.addRemote(node2, 7, ver7, 0, false, false);
+ entry.addRemote(node1, 1, ver1, false, false);
+ entry.addRemote(node2, 2, ver2, false, false);
+ entry.addRemote(node1, 3, ver3, false, false);
+ entry.addRemote(node2, 4, ver4, false, false);
+ entry.addRemote(node1, 5, ver5, false, false);
+ entry.addRemote(node2, 6, ver6, false, false);
+ entry.addRemote(node2, 7, ver7, false, false);
List<GridCacheVersion> committed = Arrays.asList(ver4, ver6, ver3);
@@ -750,11 +750,11 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver6 = version(6);
GridCacheVersion ver7 = version(7);
- entry.addRemote(node1, 1, ver1, 0, false, false);
- entry.addRemote(node2, 2, ver2, 0, false, false);
- entry.addRemote(node1, 3, ver3, 0, false, false);
- entry.addRemote(node2, 4, ver4, 0, false, false);
- entry.addRemote(node1, 5, ver5, 0, false, false);
+ entry.addRemote(node1, 1, ver1, false, false);
+ entry.addRemote(node2, 2, ver2, false, false);
+ entry.addRemote(node1, 3, ver3, false, false);
+ entry.addRemote(node2, 4, ver4, false, false);
+ entry.addRemote(node1, 5, ver5, false, false);
List<GridCacheVersion> committed = Arrays.asList(ver6, ver7);
@@ -789,11 +789,11 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver6 = version(6);
GridCacheVersion ver7 = version(7);
- entry.addRemote(node1, 1, ver1, 0, false, false);
- entry.addRemote(node2, 2, ver2, 0, false, false);
- entry.addRemote(node1, 3, ver3, 0, false, false);
- entry.addRemote(node2, 4, ver4, 0, false, false);
- entry.addRemote(node1, 5, ver5, 0, false, false);
+ entry.addRemote(node1, 1, ver1, false, false);
+ entry.addRemote(node2, 2, ver2, false, false);
+ entry.addRemote(node1, 3, ver3, false, false);
+ entry.addRemote(node2, 4, ver4, false, false);
+ entry.addRemote(node1, 5, ver5, false, false);
List<GridCacheVersion> committed = Arrays.asList(ver6, ver7);
@@ -829,12 +829,12 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver7 = version(7);
// Don't add version 2.
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
- entry.addRemote(node1, 5, ver5, 0, false, true);
- entry.addRemote(node2, 6, ver6, 0, false, true);
- entry.addRemote(node2, 7, ver7, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
+ entry.addRemote(node1, 5, ver5, false, true);
+ entry.addRemote(node2, 6, ver6, false, true);
+ entry.addRemote(node2, 7, ver7, false, true);
List<GridCacheVersion> committed = Arrays.asList(ver6, ver4);
@@ -870,9 +870,9 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver7 = version(7);
// Don't add versions 2, 5, 6, 7.
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
List<GridCacheVersion> committed = Arrays.asList(ver6, ver5, ver7);
@@ -905,12 +905,12 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver7 = version(7);
// Don't add version 1.
- entry.addRemote(node1, 2, ver2, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
- entry.addRemote(node1, 5, ver5, 0, false, true);
- entry.addRemote(node2, 6, ver6, 0, false, true);
- entry.addRemote(node2, 7, ver7, 0, false, true);
+ entry.addRemote(node1, 2, ver2, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
+ entry.addRemote(node1, 5, ver5, false, true);
+ entry.addRemote(node2, 6, ver6, false, true);
+ entry.addRemote(node2, 7, ver7, false, true);
List<GridCacheVersion> committed = Arrays.asList(ver4, ver6, ver3);
@@ -946,12 +946,12 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver7 = version(7);
// Don't add version 6, 7
- entry.addRemote(node1, 2, ver2, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
- entry.addRemote(node1, 5, ver5, 0, false, true);
- entry.addRemote(node1, 6, ver6, 0, false, true);
- entry.addRemote(node1, 7, ver7, 0, false, true);
+ entry.addRemote(node1, 2, ver2, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
+ entry.addRemote(node1, 5, ver5, false, true);
+ entry.addRemote(node1, 6, ver6, false, true);
+ entry.addRemote(node1, 7, ver7, false, true);
List<GridCacheVersion> committed = Arrays.asList(ver2, ver3);
@@ -987,10 +987,10 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver7 = version(7);
// Don't add version 5, 6, 7
- entry.addRemote(node1, 1, ver1, 0, false, true);
- entry.addRemote(node1, 2, ver2, 0, false, true);
- entry.addRemote(node1, 3, ver3, 0, false, true);
- entry.addRemote(node2, 4, ver4, 0, false, true);
+ entry.addRemote(node1, 1, ver1, false, true);
+ entry.addRemote(node1, 2, ver2, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
+ entry.addRemote(node2, 4, ver4, false, true);
List<GridCacheVersion> committed = Arrays.asList(ver6, ver7);
@@ -1021,7 +1021,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
GridCacheVersion ver4 = version(4);
GridCacheVersion ver5 = version(5);
- entry.addRemote(node1, 1, ver1, 0, false, false);
+ entry.addRemote(node1, 1, ver1, false, false);
entry.addLocal(2, ver2, 0, true, true);
Collection<GridCacheMvccCandidate> cands = entry.remoteMvccSnapshot();
@@ -1029,7 +1029,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
assert cands.size() == 1;
assert cands.iterator().next().version().equals(ver1);
- entry.addRemote(node2, 5, ver5, 0, false, false);
+ entry.addRemote(node2, 5, ver5, false, false);
cands = entry.remoteMvccSnapshot();
@@ -1040,7 +1040,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
checkOrder(cands, ver1, ver5);
checkOrder(entry.localCandidates(true), ver2);
- entry.addRemote(node1, 3, ver3, 0, false, true);
+ entry.addRemote(node1, 3, ver3, false, true);
entry.addLocal(4, ver4, 0, /*reenter*/true, false);
cands = entry.remoteMvccSnapshot();
@@ -1174,11 +1174,11 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
linkCandidates(ctx, c13, c33);
- entry2.addRemote(nodeId, 3, ver2, 0, false, true);
+ entry2.addRemote(nodeId, 3, ver2, false, true);
checkLocal(entry2.candidate(ver1), ver1, true, false, false);
- entry3.addRemote(nodeId, 3, ver2, 0, false, false);
+ entry3.addRemote(nodeId, 3, ver2, false, false);
entry3.readyLocal(ver3);
@@ -1245,11 +1245,11 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
linkCandidates(ctx, c13, c33);
- entry2.addRemote(UUID.randomUUID(), 3, ver1, 0, false, true);
+ entry2.addRemote(UUID.randomUUID(), 3, ver1, false, true);
checkLocal(entry2.candidate(ver2), ver2, true, false, false);
- entry3.addRemote(UUID.randomUUID(), 3, ver1, 0, false, true);
+ entry3.addRemote(UUID.randomUUID(), 3, ver1, false, true);
entry3.readyLocal(ver3);
@@ -1421,7 +1421,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
checkLocal(c1k1, ver2, true, true, false);
- GridCacheMvccCandidate c2k1 = entry1.addRemote(id, 2, ver1, 0, false, true);
+ GridCacheMvccCandidate c2k1 = entry1.addRemote(id, 2, ver1, false, true);
// Force recheck of assignments.
entry1.recheckLock();
@@ -1437,7 +1437,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
assert c1k2.previous() == c1k1;
- GridCacheMvccCandidate c2k2 = entry2.addRemote(id, 3, ver1, 0, false, true);
+ GridCacheMvccCandidate c2k2 = entry2.addRemote(id, 3, ver1, false, true);
entry2.readyLocal(c1k2);
@@ -1479,8 +1479,8 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
checkLocal(v3k2, ver3, false, false, false);
// Remote locks.
- GridCacheMvccCandidate v2k1 = entry1.addRemote(id, 3, ver2, 0, false, false);
- GridCacheMvccCandidate v2k2 = entry2.addRemote(id, 3, ver2, 0, false, false);
+ GridCacheMvccCandidate v2k1 = entry1.addRemote(id, 3, ver2, false, false);
+ GridCacheMvccCandidate v2k2 = entry2.addRemote(id, 3, ver2, false, false);
checkRemote(v2k1, ver2, false, false);
checkRemote(v2k2, ver2, false, false);
@@ -1602,7 +1602,7 @@ public class GridCacheMvccSelfTest extends GridCommonAbstractTest {
checkLocal(v1k1, ver1, true, false, false);
checkLocal(v1k2, ver1, true, false, false);
- GridCacheMvccCandidate v2k2 = entry2.addRemote(id, 5, ver2, 0, false, false);
+ GridCacheMvccCandidate v2k2 = entry2.addRemote(id, 5, ver2, false, false);
checkRemote(v2k2, ver2, false, false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
index 396629a..4a883d4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java
@@ -169,14 +169,13 @@ public class GridCacheTestEntryEx extends GridMetadataAwareAdapter implements Gr
* @param nodeId Node ID.
* @param threadId Thread ID.
* @param ver Lock version.
- * @param timeout Lock acquire timeout.
* @param ec Not used.
* @param tx Transaction flag.
* @return Remote candidate.
*/
- public GridCacheMvccCandidate addRemote(UUID nodeId, long threadId, GridCacheVersion ver, long timeout,
+ public GridCacheMvccCandidate addRemote(UUID nodeId, long threadId, GridCacheVersion ver,
boolean ec, boolean tx) {
- return mvcc.addRemote(this, nodeId, null, threadId, ver, timeout, tx, true, false);
+ return mvcc.addRemote(this, nodeId, null, threadId, ver, tx, true, false);
}
/**
@@ -185,13 +184,12 @@ public class GridCacheTestEntryEx extends GridMetadataAwareAdapter implements Gr
* @param nodeId Node ID.
* @param threadId Thread ID.
* @param ver Lock version.
- * @param timeout Lock acquire timeout.
* @param tx Transaction flag.
* @return Remote candidate.
*/
- public GridCacheMvccCandidate addNearLocal(UUID nodeId, long threadId, GridCacheVersion ver, long timeout,
+ public GridCacheMvccCandidate addNearLocal(UUID nodeId, long threadId, GridCacheVersion ver,
boolean tx) {
- return mvcc.addNearLocal(this, nodeId, null, threadId, ver, timeout, tx, true);
+ return mvcc.addNearLocal(this, nodeId, null, threadId, ver, tx, true);
}
/**
@@ -594,8 +592,9 @@ public class GridCacheTestEntryEx extends GridMetadataAwareAdapter implements Gr
long timeout,
@Nullable GridCacheVersion serOrder,
GridCacheVersion serReadVer,
- boolean keepBinary) {
- assert false; return false;
+ boolean read) {
+ assert false;
+ return false;
}
/** @inheritDoc */
http://git-wip-us.apache.org/repos/asf/ignite/blob/4e7c8d02/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java
index b459dde..13f29fe 100644
--- a/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/loadtests/hashmap/GridHashMapLoadTest.java
@@ -86,7 +86,7 @@ public class GridHashMapLoadTest extends GridCommonAbstractTest {
long timeout,
@Nullable GridCacheVersion serOrder,
GridCacheVersion serReadVer,
- boolean keepBinary) {
+ boolean read) {
return false;
}