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/30 14:42:23 UTC
[7/7] ignite git commit: ignite-4285
ignite-4285
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5e56c3b6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5e56c3b6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5e56c3b6
Branch: refs/heads/ignite-4285
Commit: 5e56c3b6b022d50748b5c323fd9ca4c220a6f21c
Parents: 7435d1d
Author: sboikov <sb...@gridgain.com>
Authored: Wed Nov 30 17:41:58 2016 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Nov 30 17:41:58 2016 +0300
----------------------------------------------------------------------
.../internal/processors/cache/CacheLockCandidates.java | 11 +++++++++++
.../processors/cache/CacheLockCandidatesList.java | 4 +++-
.../internal/processors/cache/GridCacheMvcc.java | 13 +++++++++----
.../cache/distributed/GridDistributedCacheEntry.java | 6 +++---
.../cache/distributed/near/GridNearCacheEntry.java | 10 +++++-----
.../distributed/near/GridNearTransactionalCache.java | 4 +---
.../processors/cache/local/GridLocalCacheEntry.java | 11 +++++++----
7 files changed, 39 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidates.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidates.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidates.java
index d139262..9cf16f4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidates.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidates.java
@@ -23,9 +23,20 @@ import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
*
*/
public interface CacheLockCandidates {
+ /**
+ * @param idx Candidate index.
+ * @return Candidate.
+ */
public GridCacheMvccCandidate candidate(int idx);
+ /**
+ * @return Number of candidates.
+ */
public int size();
+ /**
+ * @param ver Candidate version.
+ * @return {@code True} if contains candidate with given version.
+ */
public boolean hasCandidate(GridCacheVersion ver);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidatesList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidatesList.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidatesList.java
index f127d43..e026bce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidatesList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLockCandidatesList.java
@@ -35,13 +35,15 @@ class CacheLockCandidatesList implements CacheLockCandidates {
* @param cand Candidate to add.
*/
void add(GridCacheMvccCandidate cand) {
- assert !hasCandidate(cand.version());
+ assert !hasCandidate(cand.version()) : cand;
list.add(cand);
}
/** {@inheritDoc} */
@Override public GridCacheMvccCandidate candidate(int idx) {
+ assert idx < list.size() : idx;
+
return list.get(idx);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/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 0ef3f6f..498584c 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
@@ -150,6 +150,7 @@ public final class GridCacheMvcc {
@Nullable public CacheLockCandidates localOwners() {
if (locs != null) {
assert !locs.isEmpty();
+
CacheLockCandidates owners = null;
GridCacheMvccCandidate first = locs.getFirst();
@@ -160,15 +161,19 @@ public final class GridCacheMvcc {
assert cand.read() : this;
if (owners != null) {
+ CacheLockCandidatesList list;
+
if (owners.size() == 1) {
GridCacheMvccCandidate owner = owners.candidate(0);
- owners = new CacheLockCandidatesList();
+ owners = list = new CacheLockCandidatesList();
((CacheLockCandidatesList)owners).add(owner);
}
+ else
+ list = ((CacheLockCandidatesList)owners);
- ((CacheLockCandidatesList)owners).add(cand);
+ list.add(cand);
}
else
owners = cand;
@@ -1062,9 +1067,9 @@ public final class GridCacheMvcc {
return;
}
- }
- first = false;
+ first = false;
+ }
if (cand.owner())
return;
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/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 6f8d0b5..3d55f31 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
@@ -67,7 +67,7 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
/**
*
*/
- protected void refreshRemotes() {
+ private void refreshRemotes() {
GridCacheMvcc mvcc = mvccExtras();
rmts = mvcc == null ? Collections.<GridCacheMvccCandidate>emptyList() : mvcc.remoteCandidates();
@@ -377,8 +377,6 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
mvcc.remove(doomed.version());
- owner = mvcc.allOwners();
-
boolean emptyAfter = mvcc.isEmpty();
if (!doomed.local())
@@ -388,6 +386,8 @@ public class GridDistributedCacheEntry extends GridCacheMapEntry {
if (emptyAfter)
mvccExtras(null);
+ else
+ owner = mvcc.allOwners();
}
val = this.val;
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/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 cad6f90..30fc213 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
@@ -487,7 +487,7 @@ public class GridNearCacheEntry extends GridDistributedCacheEntry {
boolean read)
throws GridCacheEntryRemovedException {
CacheLockCandidates prev;
- CacheLockCandidates owner;
+ CacheLockCandidates owner = null;
GridCacheMvccCandidate cand;
CacheObject val;
@@ -531,8 +531,6 @@ public class GridNearCacheEntry extends GridDistributedCacheEntry {
cand.topologyVersion(topVer);
- owner = mvcc.allOwners();
-
boolean emptyAfter = mvcc.isEmpty();
checkCallbacks(emptyBefore, emptyAfter);
@@ -541,6 +539,8 @@ public class GridNearCacheEntry extends GridDistributedCacheEntry {
if (emptyAfter)
mvccExtras(null);
+ else
+ owner = mvcc.allOwners();
}
// This call must be outside of synchronization.
@@ -652,7 +652,7 @@ public class GridNearCacheEntry extends GridDistributedCacheEntry {
/**
* @throws GridCacheEntryRemovedException If entry was removed.
*/
- public synchronized void reserveEviction() throws GridCacheEntryRemovedException {
+ synchronized void reserveEviction() throws GridCacheEntryRemovedException {
checkObsolete();
evictReservations++;
@@ -661,7 +661,7 @@ public class GridNearCacheEntry extends GridDistributedCacheEntry {
/**
*
*/
- public synchronized void releaseEviction() {
+ synchronized void releaseEviction() {
assert evictReservations > 0 : this;
assert !obsolete() : this;
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/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 d61915b..7ac3295 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
@@ -576,9 +576,7 @@ public class GridNearTransactionalCache<K, V> extends GridNearCacheAdapter<K, V>
if (!primary.isLocal()) {
assert req != null;
- req.addKey(
- entry.key(),
- ctx);
+ req.addKey(entry.key(), ctx);
}
else
locKeys.add(cacheKey);
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e56c3b6/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 b298819..bc61333 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
@@ -89,7 +89,7 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
CacheObject val;
GridCacheMvccCandidate cand;
CacheLockCandidates prev;
- CacheLockCandidates owner;
+ CacheLockCandidates owner = null;
synchronized (this) {
checkObsolete();
@@ -124,10 +124,10 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
read
);
- owner = mvcc.localOwners();
-
if (mvcc.isEmpty())
mvccExtras(null);
+ else
+ owner = mvcc.localOwners();
val = this.val;
}
@@ -296,7 +296,10 @@ public class GridLocalCacheEntry extends GridCacheMapEntry {
for (int i = 0; i < prev.size(); i++) {
GridCacheMvccCandidate cand = prev.candidate(i);
- checkThreadChain(cand);
+ boolean unlocked = owner == null || !owner.hasCandidate(cand.version());
+
+ if (unlocked)
+ checkThreadChain(cand);
}
}