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 2017/10/25 14:01:22 UTC
[01/14] ignite git commit: IGNITE-6667 wip.
Repository: ignite
Updated Branches:
refs/heads/ignite-6667 [created] 46501d92b
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ee0c108a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ee0c108a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ee0c108a
Branch: refs/heads/ignite-6667
Commit: ee0c108a7287519516d1a7350223004927a81673
Parents: 3b18170
Author: ascherbakoff <al...@gmail.com>
Authored: Sat Oct 21 14:09:47 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sat Oct 21 14:09:47 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/DiscoCache.java | 58 +++++++++----
.../discovery/GridDiscoveryManager.java | 87 ++++++++++----------
2 files changed, 85 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee0c108a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
index 4b57eb8..7206223 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
@@ -17,13 +17,6 @@
package org.apache.ignite.internal.managers.discovery;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
@@ -36,6 +29,13 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteProductVersion;
import org.jetbrains.annotations.Nullable;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
/**
*
*/
@@ -108,7 +108,8 @@ public class DiscoCache {
Map<Integer, List<ClusterNode>> allCacheNodes,
Map<Integer, List<ClusterNode>> cacheGrpAffNodes,
Map<UUID, ClusterNode> nodeMap,
- Set<UUID> alives) {
+ Set<UUID> alives,
+ @Nullable IgniteProductVersion minVer) {
this.topVer = topVer;
this.state = state;
this.loc = loc;
@@ -122,15 +123,15 @@ public class DiscoCache {
this.nodeMap = nodeMap;
this.alives.addAll(alives);
- IgniteProductVersion minVer = null;
+ if (minVer == null) {
+ for (int i = 0; i < allNodes.size(); i++) {
+ ClusterNode node = allNodes.get(i);
- for (int i = 0; i < allNodes.size(); i++) {
- ClusterNode node = allNodes.get(i);
-
- if (minVer == null)
- minVer = node.version();
- else if (node.version().compareTo(minVer) < 0)
- minVer = node.version();
+ if (minVer == null)
+ minVer = node.version();
+ else if (node.version().compareTo(minVer) < 0)
+ minVer = node.version();
+ }
}
minNodeVer = minVer;
@@ -326,8 +327,31 @@ public class DiscoCache {
return nodes == null ? Collections.<ClusterNode>emptyList() : nodes;
}
+ /**
+ * Returns copy of discovery cache suitable for further reuse.
+ *
+ * @param ver Version.
+ * @return Copy.
+ */
+ public DiscoCache copy(AffinityTopologyVersion ver) {
+ return new DiscoCache(
+ ver,
+ state,
+ loc,
+ rmtNodes,
+ allNodes,
+ srvNodes,
+ daemonNodes,
+ rmtNodesWithCaches,
+ allCacheNodes,
+ cacheGrpAffNodes,
+ nodeMap,
+ alives,
+ minNodeVer);
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(DiscoCache.class, this);
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee0c108a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index a3b157d..06bb16c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -69,13 +69,16 @@ import org.apache.ignite.internal.managers.GridManagerAdapter;
import org.apache.ignite.internal.managers.communication.GridIoManager;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
import org.apache.ignite.internal.processors.cache.ClientCacheChangeDummyDiscoveryMessage;
+import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
import org.apache.ignite.internal.processors.cache.DynamicCacheChangeRequest;
import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotDiscoveryMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateFinishMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
@@ -232,7 +235,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
/** Topology version. */
private final AtomicReference<Snapshot> topSnap =
- new AtomicReference<>(new Snapshot(AffinityTopologyVersion.ZERO, null));
+ new AtomicReference<>(new Snapshot(AffinityTopologyVersion.ZERO, null, false));
/** Minor topology version. */
private int minorTopVer;
@@ -353,7 +356,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
*/
public void addCacheGroup(CacheGroupDescriptor grpDesc, IgnitePredicate<ClusterNode> filter, CacheMode cacheMode) {
CacheGroupAffinity old = registeredCacheGrps.put(grpDesc.groupId(),
- new CacheGroupAffinity(grpDesc.cacheOrGroupName(), filter, cacheMode));
+ new CacheGroupAffinity(grpDesc.cacheOrGroupName(), filter, cacheMode));
assert old == null : old;
}
@@ -599,7 +602,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (snapshots != null)
topHist = snapshots;
- boolean verChanged;
+ boolean verChanged, incMinorTopVer = false, reusableForNextEvt = true, preventReuse = false;
if (type == EVT_NODE_METRICS_UPDATED)
verChanged = false;
@@ -644,34 +647,40 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
final AffinityTopologyVersion nextTopVer;
+ final Snapshot snapshot = topSnap.get();
+
if (type == EVT_DISCOVERY_CUSTOM_EVT) {
assert customMsg != null;
- boolean incMinorTopVer;
-
if (customMsg instanceof ChangeGlobalStateMessage) {
incMinorTopVer = ctx.state().onStateChangeMessage(
new AffinityTopologyVersion(topVer, minorTopVer),
(ChangeGlobalStateMessage)customMsg,
discoCache());
+
+ reusableForNextEvt = false;
}
else if (customMsg instanceof ChangeGlobalStateFinishMessage) {
ctx.state().onStateFinishMessage((ChangeGlobalStateFinishMessage)customMsg);
- discoCache = createDiscoCache(topSnap.get().topVer,
+ discoCache = createDiscoCache(snapshot.topVer,
ctx.state().clusterState(),
locNode,
topSnapshot);
- topSnap.set(new Snapshot(topSnap.get().topVer, discoCache));
-
- incMinorTopVer = false;
+ topSnap.set(new Snapshot(snapshot.topVer, discoCache, true));
}
+ else if (customMsg instanceof SnapshotDiscoveryMessage)
+ incMinorTopVer = ((SnapshotDiscoveryMessage)customMsg).needExchange();
else {
incMinorTopVer = ctx.cache().onCustomEvent(
customMsg,
new AffinityTopologyVersion(topVer, minorTopVer),
node);
+
+ reusableForNextEvt = customMsg instanceof CacheAffinityChangeMessage;
+
+ preventReuse = customMsg instanceof DynamicCacheChangeBatch;
}
if (incMinorTopVer) {
@@ -709,19 +718,21 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
// event notifications, since SPI notifies manager about all events from this listener.
if (verChanged) {
if (discoCache == null) {
- discoCache = createDiscoCache(nextTopVer,
- ctx.state().clusterState(),
- locNode,
- topSnapshot);
+ discoCache = incMinorTopVer && snapshot.reusable && !preventReuse ?
+ snapshot.discoCache.copy(nextTopVer) :
+ createDiscoCache(nextTopVer,
+ ctx.state().clusterState(),
+ locNode,
+ topSnapshot);
}
discoCacheHist.put(nextTopVer, discoCache);
- boolean set = updateTopologyVersionIfGreater(nextTopVer, discoCache);
-
- assert set || topVer == 0 : "Topology version has not been updated [this.topVer=" +
- topSnap + ", topVer=" + topVer + ", node=" + node +
+ assert snapshot.topVer.compareTo(nextTopVer) < 0: "Topology version out of order [this.topVer=" +
+ topSnap + ", topVer=" + topVer + ", node=" + node + ", nextTopVer=" + nextTopVer +
", evt=" + U.gridEventName(type) + ']';
+
+ topSnap.set(new Snapshot(nextTopVer, discoCache, reusableForNextEvt));
}
else
// Current version.
@@ -734,8 +745,10 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (gridStartTime == 0)
gridStartTime = getSpi().getGridStartTime();
- updateTopologyVersionIfGreater(new AffinityTopologyVersion(locNode.order()),
- discoCache);
+ final AffinityTopologyVersion locTopVer = new AffinityTopologyVersion(locNode.order());
+
+ if (topSnap.get().topVer.compareTo(locTopVer) < 0)
+ topSnap.set(new Snapshot(locTopVer, discoCache, true));
startLatch.countDown();
@@ -784,7 +797,9 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
topHist.clear();
topSnap.set(new Snapshot(AffinityTopologyVersion.ZERO,
- createDiscoCache(AffinityTopologyVersion.ZERO, ctx.state().clusterState(), locNode, Collections.<ClusterNode>singleton(locNode))));
+ createDiscoCache(AffinityTopologyVersion.ZERO, ctx.state().clusterState(), locNode,
+ Collections.<ClusterNode>singleton(locNode)),
+ true));
}
else if (type == EVT_CLIENT_NODE_RECONNECTED) {
assert locNode.isClient() : locNode;
@@ -1585,7 +1600,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (!locJoin.isDone())
locJoin.onDone(
- new IgniteCheckedException("Failed to wait for local node joined event (grid is stopping)."));
+ new IgniteCheckedException("Failed to wait for local node joined event (grid is stopping)."));
}
/** {@inheritDoc} */
@@ -2287,7 +2302,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
Collections.unmodifiableMap(allCacheNodes),
Collections.unmodifiableMap(cacheGrpAffNodes),
Collections.unmodifiableMap(nodeMap),
- alives);
+ alives,
+ null);
}
/**
@@ -2309,26 +2325,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
cacheNodes.add(rich);
}
- /**
- * Updates topology version if current version is smaller than updated.
- *
- * @param updated Updated topology version.
- * @param discoCache Discovery cache.
- * @return {@code True} if topology was updated.
- */
- private boolean updateTopologyVersionIfGreater(AffinityTopologyVersion updated, DiscoCache discoCache) {
- while (true) {
- Snapshot cur = topSnap.get();
-
- if (updated.compareTo(cur.topVer) >= 0) {
- if (topSnap.compareAndSet(cur, new Snapshot(updated, discoCache)))
- return true;
- }
- else
- return false;
- }
- }
-
/** Stops local node. */
private void stopNode() {
new Thread(
@@ -2893,13 +2889,18 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
@GridToStringExclude
private final DiscoCache discoCache;
+ /** */
+ private final boolean reusable;
+
/**
* @param topVer Topology version.
* @param discoCache Disco cache.
+ * @param reusable Discovery cache can be reused between topology changes.
*/
- private Snapshot(AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ private Snapshot(AffinityTopologyVersion topVer, DiscoCache discoCache, boolean reusable) {
this.topVer = topVer;
this.discoCache = discoCache;
+ this.reusable = reusable;
}
/** {@inheritDoc} */
[02/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/6d677545
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/6d677545
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/6d677545
Branch: refs/heads/ignite-6667
Commit: 6d677545b1fd532c21ac8a9fbe42918072365cef
Parents: ee0c108
Author: ascherbakoff <al...@gmail.com>
Authored: Sat Oct 21 16:55:54 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sat Oct 21 16:55:54 2017 +0300
----------------------------------------------------------------------
.../discovery/GridDiscoveryManager.java | 32 ++++++--------------
1 file changed, 10 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/6d677545/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 06bb16c..9eec9c3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -69,7 +69,6 @@ import org.apache.ignite.internal.managers.GridManagerAdapter;
import org.apache.ignite.internal.managers.communication.GridIoManager;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
import org.apache.ignite.internal.processors.cache.ClientCacheChangeDummyDiscoveryMessage;
import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
@@ -78,7 +77,6 @@ import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotDiscoveryMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateFinishMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
@@ -235,7 +233,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
/** Topology version. */
private final AtomicReference<Snapshot> topSnap =
- new AtomicReference<>(new Snapshot(AffinityTopologyVersion.ZERO, null, false));
+ new AtomicReference<>(new Snapshot(AffinityTopologyVersion.ZERO, null));
/** Minor topology version. */
private int minorTopVer;
@@ -602,7 +600,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (snapshots != null)
topHist = snapshots;
- boolean verChanged, incMinorTopVer = false, reusableForNextEvt = true, preventReuse = false;
+ boolean verChanged, incMinorTopVer = false, preventReuse = false;
if (type == EVT_NODE_METRICS_UPDATED)
verChanged = false;
@@ -657,8 +655,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
new AffinityTopologyVersion(topVer, minorTopVer),
(ChangeGlobalStateMessage)customMsg,
discoCache());
-
- reusableForNextEvt = false;
}
else if (customMsg instanceof ChangeGlobalStateFinishMessage) {
ctx.state().onStateFinishMessage((ChangeGlobalStateFinishMessage)customMsg);
@@ -668,18 +664,14 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
locNode,
topSnapshot);
- topSnap.set(new Snapshot(snapshot.topVer, discoCache, true));
+ topSnap.set(new Snapshot(snapshot.topVer, discoCache));
}
- else if (customMsg instanceof SnapshotDiscoveryMessage)
- incMinorTopVer = ((SnapshotDiscoveryMessage)customMsg).needExchange();
else {
incMinorTopVer = ctx.cache().onCustomEvent(
customMsg,
new AffinityTopologyVersion(topVer, minorTopVer),
node);
- reusableForNextEvt = customMsg instanceof CacheAffinityChangeMessage;
-
preventReuse = customMsg instanceof DynamicCacheChangeBatch;
}
@@ -718,7 +710,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
// event notifications, since SPI notifies manager about all events from this listener.
if (verChanged) {
if (discoCache == null) {
- discoCache = incMinorTopVer && snapshot.reusable && !preventReuse ?
+ discoCache =
+ incMinorTopVer && !preventReuse ?
snapshot.discoCache.copy(nextTopVer) :
createDiscoCache(nextTopVer,
ctx.state().clusterState(),
@@ -732,7 +725,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
topSnap + ", topVer=" + topVer + ", node=" + node + ", nextTopVer=" + nextTopVer +
", evt=" + U.gridEventName(type) + ']';
- topSnap.set(new Snapshot(nextTopVer, discoCache, reusableForNextEvt));
+ topSnap.set(new Snapshot(nextTopVer, discoCache));
}
else
// Current version.
@@ -748,7 +741,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
final AffinityTopologyVersion locTopVer = new AffinityTopologyVersion(locNode.order());
if (topSnap.get().topVer.compareTo(locTopVer) < 0)
- topSnap.set(new Snapshot(locTopVer, discoCache, true));
+ topSnap.set(new Snapshot(locTopVer, discoCache));
startLatch.countDown();
@@ -798,8 +791,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
topSnap.set(new Snapshot(AffinityTopologyVersion.ZERO,
createDiscoCache(AffinityTopologyVersion.ZERO, ctx.state().clusterState(), locNode,
- Collections.<ClusterNode>singleton(locNode)),
- true));
+ Collections.<ClusterNode>singleton(locNode))
+ ));
}
else if (type == EVT_CLIENT_NODE_RECONNECTED) {
assert locNode.isClient() : locNode;
@@ -2889,18 +2882,13 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
@GridToStringExclude
private final DiscoCache discoCache;
- /** */
- private final boolean reusable;
-
/**
* @param topVer Topology version.
* @param discoCache Disco cache.
- * @param reusable Discovery cache can be reused between topology changes.
*/
- private Snapshot(AffinityTopologyVersion topVer, DiscoCache discoCache, boolean reusable) {
+ private Snapshot(AffinityTopologyVersion topVer, DiscoCache discoCache) {
this.topVer = topVer;
this.discoCache = discoCache;
- this.reusable = reusable;
}
/** {@inheritDoc} */
[11/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c44ea826
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c44ea826
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c44ea826
Branch: refs/heads/ignite-6667
Commit: c44ea826cabc8e46d14d4c4f964abfb2e99911ef
Parents: 92d00c3
Author: Aleksei Scherbakov <al...@gmail.com>
Authored: Tue Oct 24 15:07:55 2017 +0300
Committer: Aleksei Scherbakov <al...@gmail.com>
Committed: Tue Oct 24 15:07:55 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/DiscoveryCustomMessage.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c44ea826/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
index ae238a0..2f4c5fe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
@@ -97,7 +97,8 @@ public interface DiscoveryCustomMessage extends Serializable {
*
* @param ctx Context.
* @param topVer New topology version.
- * @param discoCache @return Reused discovery cache.
+ * @param discoCache Current discovery cache.
+ * @return Reused discovery cache.
*
* @throws UnsupportedOperationException If message doesn't support discovery cache reuse.
*/
[07/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/44c4c578
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/44c4c578
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/44c4c578
Branch: refs/heads/ignite-6667
Commit: 44c4c5788db387bfc53001e16fcea26db8575849
Parents: 51779cd
Author: ascherbakoff <al...@gmail.com>
Authored: Sun Oct 22 17:28:47 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sun Oct 22 17:28:47 2017 +0300
----------------------------------------------------------------------
.../ignite/internal/managers/discovery/GridDiscoveryManager.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/44c4c578/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index b1af364..61be4c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -655,6 +655,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
new AffinityTopologyVersion(topVer, minorTopVer),
(ChangeGlobalStateMessage)customMsg,
discoCache());
+
+ preventReuse = true;
}
else if (customMsg instanceof ChangeGlobalStateFinishMessage) {
ctx.state().onStateFinishMessage((ChangeGlobalStateFinishMessage)customMsg);
[10/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/92d00c36
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/92d00c36
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/92d00c36
Branch: refs/heads/ignite-6667
Commit: 92d00c36c53813ecebb6164ca72da0154d9de8c1
Parents: d6fe138
Author: Aleksei Scherbakov <al...@gmail.com>
Authored: Tue Oct 24 15:04:20 2017 +0300
Committer: Aleksei Scherbakov <al...@gmail.com>
Committed: Tue Oct 24 15:04:20 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/DiscoCache.java | 6 +-
.../discovery/DiscoveryCustomMessage.java | 13 ++--
.../discovery/GridDiscoveryManager.java | 70 +++++++++++++++-----
.../discovery/ReuseDiscoCacheStrategy.java | 65 ------------------
.../cache/CacheAffinityChangeMessage.java | 15 ++---
.../ClientCacheChangeDiscoveryMessage.java | 15 ++---
.../ClientCacheChangeDummyDiscoveryMessage.java | 15 ++---
.../cache/DynamicCacheChangeBatch.java | 15 ++---
.../binary/MetadataUpdateAcceptedMessage.java | 15 ++---
.../binary/MetadataUpdateProposedMessage.java | 15 ++---
.../cluster/ChangeGlobalStateFinishMessage.java | 15 ++---
.../cluster/ChangeGlobalStateMessage.java | 15 ++---
.../continuous/AbstractContinuousMessage.java | 15 ++---
.../marshaller/MappingAcceptedMessage.java | 15 ++---
.../marshaller/MappingProposedMessage.java | 15 ++---
.../message/SchemaAbstractDiscoveryMessage.java | 15 ++---
16 files changed, 114 insertions(+), 220 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
index 0578c57..32aa23b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
@@ -319,11 +319,13 @@ public class DiscoCache {
* Returns copy of discovery cache suitable for further reuse.
*
* @param ver Version.
+ * @param st State.
+ *
* @return Copy.
*/
- public DiscoCache copy(@Nullable AffinityTopologyVersion ver, @Nullable DiscoveryDataClusterState st) {
+ public DiscoCache copy(AffinityTopologyVersion ver, @Nullable DiscoveryDataClusterState st) {
return new DiscoCache(
- ver == null ? topVer : ver,
+ ver,
st == null ? state : st,
loc,
rmtNodes,
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
index 660e883..ae238a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.managers.discovery;
import java.io.Serializable;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddFinishedMessage;
@@ -92,12 +93,14 @@ public interface DiscoveryCustomMessage extends Serializable {
public boolean isMutable();
/**
- * Creates new discovery cache in most efficient way for current message type on topology change.
+ * Reuses current discovery cache in most efficient way for given message type.
*
- * @param stgy Current cache.
+ * @param ctx Context.
* @param topVer New topology version.
- * @param discoCache @return New cache or null if not applicable.
+ * @param discoCache @return Reused discovery cache.
+ *
+ * @throws UnsupportedOperationException If message doesn't support discovery cache reuse.
*/
- public @Nullable DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy, AffinityTopologyVersion topVer,
- DiscoCache discoCache);
+ public DiscoCache reuseDiscoCache(GridKernalContext ctx, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) throws UnsupportedOperationException;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index a6e9e56..d91d7d0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -161,7 +161,7 @@ import static org.apache.ignite.plugin.segmentation.SegmentationPolicy.NOOP;
/**
* Discovery SPI manager.
*/
-public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> implements ReuseDiscoCacheStrategy {
+public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
/** Metrics update frequency. */
private static final long METRICS_UPDATE_FREQ = 3000;
@@ -660,14 +660,12 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> imple
discoCache());
}
else if (customMsg instanceof ChangeGlobalStateFinishMessage) {
- ctx.state().onStateFinishMessage((ChangeGlobalStateFinishMessage)customMsg);
+ final ChangeGlobalStateFinishMessage finishMsg = (ChangeGlobalStateFinishMessage)customMsg;
- discoCache = createDiscoCache(snapshot.topVer,
- ctx.state().clusterState(),
- locNode,
- topSnapshot);
+ ctx.state().onStateFinishMessage(finishMsg);
- topSnap.set(new Snapshot(snapshot.topVer, discoCache));
+ topSnap.set(new Snapshot(snapshot.topVer, (discoCache =
+ finishMsg.reuseDiscoCache(ctx, snapshot.topVer, snapshot.discoCache))));
}
else {
incMinorTopVer = ctx.cache().onCustomEvent(
@@ -712,7 +710,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> imple
if (verChanged) {
if (discoCache == null) {
discoCache = incMinorTopVer ?
- customMsg.reuseDiscoCache(GridDiscoveryManager.this, nextTopVer, snapshot.discoCache) :
+ customMsg.reuseDiscoCache(ctx, nextTopVer, snapshot.discoCache) :
createDiscoCache(nextTopVer,
ctx.state().clusterState(),
locNode,
@@ -3071,8 +3069,15 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> imple
}
}
- /** {@inheritDoc} */
- @Override public DiscoCache apply(DynamicCacheChangeBatch msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ /**
+ * Reuses discovery cache for {@link DynamicCacheChangeBatch}
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache reuseDiscoCache(DynamicCacheChangeBatch msg, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
List<ClusterNode> allNodes = discoCache.allNodes();
Map<Integer, List<ClusterNode>> allCacheNodes = U.newHashMap(allNodes.size());
Map<Integer, List<ClusterNode>> cacheGrpAffNodes = U.newHashMap(allNodes.size());
@@ -3096,18 +3101,51 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> imple
discoCache.minimumNodeVersion());
}
- /** {@inheritDoc} */
- @Override public DiscoCache apply(CacheAffinityChangeMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ /**
+ * Reuses discovery cache for {@link CacheAffinityChangeMessage}
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache reuseDiscoCache(CacheAffinityChangeMessage msg, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
return discoCache.copy(topVer, null);
}
- /** {@inheritDoc} */
- @Override public DiscoCache apply(SnapshotDiscoveryMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ /**
+ * Reuses discovery cache for {@link SnapshotDiscoveryMessage}
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache reuseDiscoCache(SnapshotDiscoveryMessage msg, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
return discoCache.copy(topVer, null);
}
- /** {@inheritDoc} */
- @Override public DiscoCache apply(ChangeGlobalStateMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ /**
+ * Reuses discovery cache for {@link ChangeGlobalStateMessage}
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache reuseDiscoCache(ChangeGlobalStateMessage msg, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
+ return discoCache.copy(topVer, ctx.state().clusterState());
+ }
+
+ /**
+ * Reuses discovery cache for {@link ChangeGlobalStateFinishMessage}
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache reuseDiscoCache(ChangeGlobalStateFinishMessage msg, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
return discoCache.copy(topVer, ctx.state().clusterState());
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java
deleted file mode 100644
index 7c5652b..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.managers.discovery;
-
-import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
-import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotDiscoveryMessage;
-import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
-
-/**
- * Defines messages which are willing to reuse discovery cache for efficiency reasons.
- */
-public interface ReuseDiscoCacheStrategy {
- /**
- * Create discovery cache for {@link DynamicCacheChangeBatch} message.
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache apply(DynamicCacheChangeBatch msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
-
- /**
- * Create discovery cache for {@link CacheAffinityChangeMessage} message.
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache apply(CacheAffinityChangeMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
-
- /**
- * Create discovery cache for {@link SnapshotDiscoveryMessage} message.
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache apply(SnapshotDiscoveryMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
-
- /**
- * Create discovery cache for {@link ChangeGlobalStateMessage} message.
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache apply(ChangeGlobalStateMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
index 8be4a5c..2897c55 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
@@ -21,9 +21,9 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage;
@@ -156,17 +156,10 @@ public class CacheAffinityChangeMessage implements DiscoveryCustomMessage {
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return stgy.apply(this, topVer, discoCache);
+ return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
index 1be8fcd..22e40c8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
@@ -23,9 +23,9 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -173,17 +173,10 @@ public class ClientCacheChangeDiscoveryMessage implements DiscoveryCustomMessage
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
index a9180c0..afa2081 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
@@ -21,9 +21,9 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -105,17 +105,10 @@ public class ClientCacheChangeDummyDiscoveryMessage implements DiscoveryCustomMe
throw new UnsupportedOperationException();
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
index f01857e..d266262 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
@@ -20,9 +20,9 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Collection;
import java.util.Set;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -77,17 +77,10 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return stgy.apply(this, topVer, discoCache);
+ return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
index c195731..8a78657 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
@@ -16,9 +16,9 @@
*/
package org.apache.ignite.internal.processors.cache.binary;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -70,17 +70,10 @@ public class MetadataUpdateAcceptedMessage implements DiscoveryCustomMessage {
return true;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
index 160faf3..50c9628 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
@@ -18,11 +18,11 @@ package org.apache.ignite.internal.processors.cache.binary;
import java.util.UUID;
import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.binary.BinaryMetadataHandler;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -133,17 +133,10 @@ public final class MetadataUpdateProposedMessage implements DiscoveryCustomMessa
return true;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
index 79342cf..7f094c7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
@@ -19,9 +19,9 @@ package org.apache.ignite.internal.processors.cluster;
import java.util.UUID;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -83,17 +83,10 @@ public class ChangeGlobalStateFinishMessage implements DiscoveryCustomMessage {
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
index eed04fc..2507ec9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
@@ -20,9 +20,9 @@ package org.apache.ignite.internal.processors.cluster;
import java.util.List;
import java.util.UUID;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.ExchangeActions;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
@@ -116,17 +116,10 @@ public class ChangeGlobalStateMessage implements DiscoveryCustomMessage {
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return stgy.apply(this, topVer, discoCache);
+ return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
index 8279b07..cdf3c1d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
@@ -19,9 +19,9 @@ package org.apache.ignite.internal.processors.continuous;
import java.util.UUID;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -63,16 +63,9 @@ public abstract class AbstractContinuousMessage implements DiscoveryCustomMessag
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
index 52eac25..c47aa27 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.processors.marshaller;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -62,17 +62,10 @@ public class MappingAcceptedMessage implements DiscoveryCustomMessage {
return false;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
index 8c2abaa..8cf8e61 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
@@ -19,9 +19,9 @@ package org.apache.ignite.internal.processors.marshaller;
import java.util.UUID;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -98,17 +98,10 @@ public class MappingProposedMessage implements DiscoveryCustomMessage {
return true;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/** */
http://git-wip-us.apache.org/repos/asf/ignite/blob/92d00c36/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
index e055606..e567fdc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.processors.query.schema.message;
+import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
-import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -55,17 +55,10 @@ public abstract class SchemaAbstractDiscoveryMessage implements DiscoveryCustomM
return id;
}
- /**
- * {@inheritDoc}
- * @param stgy Reuse strategy.
- * @param topVer New topology version.
- * @param discoCache Discovery cache
- *
- * @return Reused discovery cache if possible.
- */
- @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ /** {@inheritDoc} */
+ @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return null;
+ throw new UnsupportedOperationException();
}
/**
[12/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0adf1ef8
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0adf1ef8
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0adf1ef8
Branch: refs/heads/ignite-6667
Commit: 0adf1ef821ed0b2dd2d54fb833d804f2e03b4137
Parents: c44ea82
Author: Aleksei Scherbakov <al...@gmail.com>
Authored: Tue Oct 24 15:09:59 2017 +0300
Committer: Aleksei Scherbakov <al...@gmail.com>
Committed: Tue Oct 24 15:09:59 2017 +0300
----------------------------------------------------------------------
.../ignite/internal/managers/discovery/GridDiscoveryManager.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/0adf1ef8/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index d91d7d0..03d46de 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -2207,7 +2207,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
* @param topSnapshot Topology snapshot.
* @return Newly created discovery cache.
*/
- @NotNull DiscoCache createDiscoCache(
+ @NotNull private DiscoCache createDiscoCache(
AffinityTopologyVersion topVer,
DiscoveryDataClusterState state,
ClusterNode loc,
[14/14] ignite git commit: ignite-6667
Posted by sb...@apache.org.
ignite-6667
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/46501d92
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/46501d92
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/46501d92
Branch: refs/heads/ignite-6667
Commit: 46501d92b7c07c1bdeb86c27a6f0e170adb10f12
Parents: 7c8ffc4
Author: sboikov <sb...@gridgain.com>
Authored: Wed Oct 25 16:52:40 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Oct 25 17:01:10 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/DiscoCache.java | 31 ++---
.../discovery/DiscoveryCustomMessage.java | 10 +-
.../discovery/GridDiscoveryManager.java | 132 +++++--------------
.../cache/CacheAffinityChangeMessage.java | 7 +-
.../ClientCacheChangeDiscoveryMessage.java | 5 +-
.../ClientCacheChangeDummyDiscoveryMessage.java | 5 +-
.../cache/DynamicCacheChangeBatch.java | 11 +-
.../binary/MetadataUpdateAcceptedMessage.java | 4 +-
.../binary/MetadataUpdateProposedMessage.java | 4 +-
.../cluster/ChangeGlobalStateFinishMessage.java | 7 +-
.../cluster/ChangeGlobalStateMessage.java | 9 +-
.../continuous/AbstractContinuousMessage.java | 5 +-
.../marshaller/MappingAcceptedMessage.java | 4 +-
.../marshaller/MappingProposedMessage.java | 5 +-
.../message/SchemaAbstractDiscoveryMessage.java | 4 +-
.../IgniteDiscoveryCacheReuseSelfTest.java | 28 +++-
16 files changed, 106 insertions(+), 165 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
index 32aa23b..9ed70aa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
@@ -17,6 +17,12 @@
package org.apache.ignite.internal.managers.discovery;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
@@ -29,13 +35,6 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteProductVersion;
import org.jetbrains.annotations.Nullable;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-
/**
*
*/
@@ -95,6 +94,7 @@ public class DiscoCache {
* @param cacheGrpAffNodes Affinity nodes by cache group ID.
* @param nodeMap Node map.
* @param alives Alive nodes.
+ * @param minNodeVer Minimum node version.
*/
DiscoCache(
AffinityTopologyVersion topVer,
@@ -109,7 +109,7 @@ public class DiscoCache {
Map<Integer, List<ClusterNode>> cacheGrpAffNodes,
Map<UUID, ClusterNode> nodeMap,
Set<UUID> alives,
- IgniteProductVersion minVer) {
+ IgniteProductVersion minNodeVer) {
this.topVer = topVer;
this.state = state;
this.loc = loc;
@@ -122,7 +122,7 @@ public class DiscoCache {
this.cacheGrpAffNodes = cacheGrpAffNodes;
this.nodeMap = nodeMap;
this.alives.addAll(alives);
- minNodeVer = minVer;
+ this.minNodeVer = minNodeVer;
}
/**
@@ -316,17 +316,14 @@ public class DiscoCache {
}
/**
- * Returns copy of discovery cache suitable for further reuse.
- *
- * @param ver Version.
- * @param st State.
- *
- * @return Copy.
+ * @param ver Topology version.
+ * @param state Not {@code null} state if need override state, otherwise current state is used.
+ * @return Copy of discovery cache with new version.
*/
- public DiscoCache copy(AffinityTopologyVersion ver, @Nullable DiscoveryDataClusterState st) {
+ public DiscoCache copy(AffinityTopologyVersion ver, @Nullable DiscoveryDataClusterState state) {
return new DiscoCache(
ver,
- st == null ? state : st,
+ state == null ? this.state : state,
loc,
rmtNodes,
allNodes,
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
index 2f4c5fe..c708c62 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.managers.discovery;
import java.io.Serializable;
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddFinishedMessage;
@@ -93,15 +92,12 @@ public interface DiscoveryCustomMessage extends Serializable {
public boolean isMutable();
/**
- * Reuses current discovery cache in most efficient way for given message type.
+ * Creates new discovery cache if message caused topology version change.
*
- * @param ctx Context.
+ * @param mgr Discovery manager.
* @param topVer New topology version.
* @param discoCache Current discovery cache.
* @return Reused discovery cache.
- *
- * @throws UnsupportedOperationException If message doesn't support discovery cache reuse.
*/
- public DiscoCache reuseDiscoCache(GridKernalContext ctx, AffinityTopologyVersion topVer,
- DiscoCache discoCache) throws UnsupportedOperationException;
+ public DiscoCache createDiscoCache(GridDiscoveryManager mgr, AffinityTopologyVersion topVer, DiscoCache discoCache);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 03d46de..ad32116 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -69,7 +69,6 @@ import org.apache.ignite.internal.managers.GridManagerAdapter;
import org.apache.ignite.internal.managers.communication.GridIoManager;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
import org.apache.ignite.internal.processors.cache.ClientCacheChangeDummyDiscoveryMessage;
import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
@@ -78,7 +77,6 @@ import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotDiscoveryMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateFinishMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
@@ -603,7 +601,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (snapshots != null)
topHist = snapshots;
- boolean verChanged, incMinorTopVer = false;
+ boolean verChanged;
if (type == EVT_NODE_METRICS_UPDATED)
verChanged = false;
@@ -627,32 +625,20 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
updateClientNodes(node.id());
}
- DiscoCache discoCache = null;
-
boolean locJoinEvt = type == EVT_NODE_JOINED && node.id().equals(locNode.id());
- IgniteInternalFuture<Boolean> transitionWaitFut = null;
-
ChangeGlobalStateFinishMessage stateFinishMsg = null;
- if (locJoinEvt) {
- discoCache = createDiscoCache(new AffinityTopologyVersion(topVer, minorTopVer),
- ctx.state().clusterState(),
- locNode,
- topSnapshot);
-
- transitionWaitFut = ctx.state().onLocalJoin(discoCache);
- }
- else if (type == EVT_NODE_FAILED || type == EVT_NODE_LEFT)
+ if (type == EVT_NODE_FAILED || type == EVT_NODE_LEFT)
stateFinishMsg = ctx.state().onNodeLeft(node);
final AffinityTopologyVersion nextTopVer;
- final Snapshot snapshot = topSnap.get();
-
if (type == EVT_DISCOVERY_CUSTOM_EVT) {
assert customMsg != null;
+ boolean incMinorTopVer;
+
if (customMsg instanceof ChangeGlobalStateMessage) {
incMinorTopVer = ctx.state().onStateChangeMessage(
new AffinityTopologyVersion(topVer, minorTopVer),
@@ -660,12 +646,16 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
discoCache());
}
else if (customMsg instanceof ChangeGlobalStateFinishMessage) {
- final ChangeGlobalStateFinishMessage finishMsg = (ChangeGlobalStateFinishMessage)customMsg;
+ ctx.state().onStateFinishMessage((ChangeGlobalStateFinishMessage)customMsg);
+
+ Snapshot snapshot = topSnap.get();
- ctx.state().onStateFinishMessage(finishMsg);
+ // Topology version does not change, but need create DiscoCache with new state.
+ DiscoCache discoCache = snapshot.discoCache.copy(snapshot.topVer, ctx.state().clusterState());
- topSnap.set(new Snapshot(snapshot.topVer, (discoCache =
- finishMsg.reuseDiscoCache(ctx, snapshot.topVer, snapshot.discoCache))));
+ topSnap.set(new Snapshot(snapshot.topVer, discoCache));
+
+ incMinorTopVer = false;
}
else {
incMinorTopVer = ctx.cache().onCustomEvent(
@@ -704,18 +694,22 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
}
}
+ DiscoCache discoCache;
+
// Put topology snapshot into discovery history.
// There is no race possible between history maintenance and concurrent discovery
// event notifications, since SPI notifies manager about all events from this listener.
if (verChanged) {
- if (discoCache == null) {
- discoCache = incMinorTopVer ?
- customMsg.reuseDiscoCache(ctx, nextTopVer, snapshot.discoCache) :
- createDiscoCache(nextTopVer,
- ctx.state().clusterState(),
- locNode,
- topSnapshot);
+ Snapshot snapshot = topSnap.get();
+
+ if (customMsg == null) {
+ discoCache = createDiscoCache(nextTopVer,
+ ctx.state().clusterState(),
+ locNode,
+ topSnapshot);
}
+ else
+ discoCache = customMsg.createDiscoCache(GridDiscoveryManager.this, nextTopVer, snapshot.discoCache);
discoCacheHist.put(nextTopVer, discoCache);
@@ -736,10 +730,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (gridStartTime == 0)
gridStartTime = getSpi().getGridStartTime();
- final AffinityTopologyVersion locTopVer = new AffinityTopologyVersion(locNode.order());
-
- if (topSnap.get().topVer.compareTo(locTopVer) < 0)
- topSnap.set(new Snapshot(locTopVer, discoCache));
+ topSnap.set(new Snapshot(nextTopVer, discoCache));
startLatch.countDown();
@@ -756,6 +747,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (!isLocDaemon && !ctx.clientDisconnected())
ctx.cache().context().exchange().onLocalJoin(discoEvt, discoCache);
+ IgniteInternalFuture<Boolean> transitionWaitFut = ctx.state().onLocalJoin(discoCache);
+
locJoin.onDone(new DiscoveryLocalJoinData(discoEvt,
discoCache,
transitionWaitFut,
@@ -2222,6 +2215,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
ArrayList<ClusterNode> rmtNodes = new ArrayList<>(topSnapshot.size());
ArrayList<ClusterNode> allNodes = new ArrayList<>(topSnapshot.size());
+ IgniteProductVersion minVer = null;
+
for (ClusterNode node : topSnapshot) {
if (alive(node))
alives.add(node.id());
@@ -2239,6 +2234,11 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
}
nodeMap.put(node.id(), node);
+
+ if (minVer == null)
+ minVer = node.version();
+ else if (node.version().compareTo(minVer) < 0)
+ minVer = node.version();
}
assert !rmtNodes.contains(loc) : "Remote nodes collection shouldn't contain local node" +
@@ -2250,17 +2250,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
fillAffinityNodeCaches(allNodes, allCacheNodes, cacheGrpAffNodes, rmtNodesWithCaches);
- IgniteProductVersion minVer = null;
-
- for (int i = 0; i < allNodes.size(); i++) {
- ClusterNode node = allNodes.get(i);
-
- if (minVer == null)
- minVer = node.version();
- else if (node.version().compareTo(minVer) < 0)
- minVer = node.version();
- }
-
return new DiscoCache(
topVer,
state,
@@ -3070,13 +3059,12 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
}
/**
- * Reuses discovery cache for {@link DynamicCacheChangeBatch}
+ * Creates discovery cache after {@link DynamicCacheChangeBatch} received.
*
- * @param msg Message.
* @param topVer Topology version.
- * @param discoCache Disco cache.
+ * @param discoCache Current disco cache.
*/
- public DiscoCache reuseDiscoCache(DynamicCacheChangeBatch msg, AffinityTopologyVersion topVer,
+ public DiscoCache createDiscoCacheOnCacheChange(AffinityTopologyVersion topVer,
DiscoCache discoCache) {
List<ClusterNode> allNodes = discoCache.allNodes();
Map<Integer, List<ClusterNode>> allCacheNodes = U.newHashMap(allNodes.size());
@@ -3100,52 +3088,4 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
discoCache.alives,
discoCache.minimumNodeVersion());
}
-
- /**
- * Reuses discovery cache for {@link CacheAffinityChangeMessage}
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache reuseDiscoCache(CacheAffinityChangeMessage msg, AffinityTopologyVersion topVer,
- DiscoCache discoCache) {
- return discoCache.copy(topVer, null);
- }
-
- /**
- * Reuses discovery cache for {@link SnapshotDiscoveryMessage}
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache reuseDiscoCache(SnapshotDiscoveryMessage msg, AffinityTopologyVersion topVer,
- DiscoCache discoCache) {
- return discoCache.copy(topVer, null);
- }
-
- /**
- * Reuses discovery cache for {@link ChangeGlobalStateMessage}
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache reuseDiscoCache(ChangeGlobalStateMessage msg, AffinityTopologyVersion topVer,
- DiscoCache discoCache) {
- return discoCache.copy(topVer, ctx.state().clusterState());
- }
-
- /**
- * Reuses discovery cache for {@link ChangeGlobalStateFinishMessage}
- *
- * @param msg Message.
- * @param topVer Topology version.
- * @param discoCache Disco cache.
- */
- public DiscoCache reuseDiscoCache(ChangeGlobalStateFinishMessage msg, AffinityTopologyVersion topVer,
- DiscoCache discoCache) {
- return discoCache.copy(topVer, ctx.state().clusterState());
- }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
index 2897c55..fe1014c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
@@ -20,10 +20,9 @@ package org.apache.ignite.internal.processors.cache;
import java.util.List;
import java.util.Map;
import java.util.UUID;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage;
@@ -157,9 +156,9 @@ public class CacheAffinityChangeMessage implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
+ return discoCache.copy(topVer, null);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
index 22e40c8..e35d80e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
@@ -22,10 +22,9 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -174,7 +173,7 @@ public class ClientCacheChangeDiscoveryMessage implements DiscoveryCustomMessage
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
index afa2081..6ed3ecc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
@@ -20,10 +20,9 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -106,7 +105,7 @@ public class ClientCacheChangeDummyDiscoveryMessage implements DiscoveryCustomMe
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
index d266262..83459a5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
@@ -19,10 +19,9 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Collection;
import java.util.Set;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -78,9 +77,9 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
- AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
+ @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
+ return mgr.createDiscoCacheOnCacheChange(topVer, discoCache);
}
/**
@@ -147,4 +146,4 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
@Override public String toString() {
return S.toString(DynamicCacheChangeBatch.class, this);
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
index 8a78657..0416746 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
@@ -16,9 +16,9 @@
*/
package org.apache.ignite.internal.processors.cache.binary;
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -71,7 +71,7 @@ public class MetadataUpdateAcceptedMessage implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
index 50c9628..f9bd660 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
@@ -18,11 +18,11 @@ package org.apache.ignite.internal.processors.cache.binary;
import java.util.UUID;
import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.binary.BinaryMetadataHandler;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -134,7 +134,7 @@ public final class MetadataUpdateProposedMessage implements DiscoveryCustomMessa
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
index 7f094c7..a1fbacf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
@@ -18,10 +18,9 @@
package org.apache.ignite.internal.processors.cluster;
import java.util.UUID;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -84,9 +83,9 @@ public class ChangeGlobalStateFinishMessage implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
+ throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
index 2507ec9..22e376f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
@@ -19,10 +19,9 @@ package org.apache.ignite.internal.processors.cluster;
import java.util.List;
import java.util.UUID;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.ExchangeActions;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
@@ -117,9 +116,9 @@ public class ChangeGlobalStateMessage implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
- AffinityTopologyVersion topVer, DiscoCache discoCache) {
- return ctx.discovery().reuseDiscoCache(this, topVer, discoCache);
+ @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr, AffinityTopologyVersion topVer,
+ DiscoCache discoCache) {
+ return discoCache.copy(topVer, null);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
index cdf3c1d..e9754d1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
@@ -18,10 +18,9 @@
package org.apache.ignite.internal.processors.continuous;
import java.util.UUID;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -64,7 +63,7 @@ public abstract class AbstractContinuousMessage implements DiscoveryCustomMessag
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
index c47aa27..7af0559 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.processors.marshaller;
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -63,7 +63,7 @@ public class MappingAcceptedMessage implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
index 8cf8e61..b4e13fb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
@@ -18,10 +18,9 @@
package org.apache.ignite.internal.processors.marshaller;
import java.util.UUID;
-
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -99,7 +98,7 @@ public class MappingProposedMessage implements DiscoveryCustomMessage {
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
index e567fdc..f55eae0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.processors.query.schema.message;
-import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -56,7 +56,7 @@ public abstract class SchemaAbstractDiscoveryMessage implements DiscoveryCustomM
}
/** {@inheritDoc} */
- @Nullable @Override public DiscoCache reuseDiscoCache(GridKernalContext ctx,
+ @Nullable @Override public DiscoCache createDiscoCache(GridDiscoveryManager mgr,
AffinityTopologyVersion topVer, DiscoCache discoCache) {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/46501d92/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
index 034bfa8..c238a9a 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
@@ -18,20 +18,38 @@
package org.apache.ignite.spi.discovery;
import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashMap;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.internal.U;
+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;
/**
* Tests discovery cache reuse between topology events.
*/
public class IgniteDiscoveryCacheReuseSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(IP_FINDER);
+
+ return cfg;
+ }
+
/**
* Tests correct reuse of discovery cache.
+ *
+ * @throws Exception If failed.
*/
public void testDiscoCacheReuseOnNodeJoin() throws Exception {
startGridsMultiThreaded(2);
@@ -45,11 +63,10 @@ public class IgniteDiscoveryCacheReuseSelfTest extends GridCommonAbstractTest {
* @param v1 First version.
* @param v2 Next version.
*/
- private void assertDiscoCacheReuse(AffinityTopologyVersion v1,
- AffinityTopologyVersion v2) {
+ private void assertDiscoCacheReuse(AffinityTopologyVersion v1, AffinityTopologyVersion v2) {
for (Ignite ignite : G.allGrids()) {
GridBoundedConcurrentLinkedHashMap<AffinityTopologyVersion, DiscoCache> discoCacheHist =
- U.field(((IgniteEx) ignite).context().discovery(), "discoCacheHist");
+ U.field(((IgniteEx) ignite).context().discovery(), "discoCacheHist");
DiscoCache discoCache1 = discoCacheHist.get(v1);
DiscoCache discoCache2 = discoCacheHist.get(v2);
@@ -58,8 +75,8 @@ public class IgniteDiscoveryCacheReuseSelfTest extends GridCommonAbstractTest {
assertEquals(v2, discoCache2.version());
String[] props = new String[] {
- "state", "loc", "rmtNodes", "allNodes", "srvNodes", "daemonNodes", "rmtNodesWithCaches",
- "allCacheNodes", "allCacheNodes", "cacheGrpAffNodes", "nodeMap", "minNodeVer"
+ "state", "loc", "rmtNodes", "allNodes", "srvNodes", "daemonNodes", "rmtNodesWithCaches",
+ "allCacheNodes", "allCacheNodes", "cacheGrpAffNodes", "nodeMap", "minNodeVer"
};
for (String prop : props)
@@ -67,7 +84,6 @@ public class IgniteDiscoveryCacheReuseSelfTest extends GridCommonAbstractTest {
assertNotSame(U.field(discoCache1, "alives"), U.field(discoCache2, "alives"));
assertEquals(U.field(discoCache1, "alives"), U.field(discoCache2, "alives"));
-
}
}
}
\ No newline at end of file
[04/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/473bb44f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/473bb44f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/473bb44f
Branch: refs/heads/ignite-6667
Commit: 473bb44f1c13421d3a4f55d24261eaf65c0263b5
Parents: ee014c4
Author: ascherbakoff <al...@gmail.com>
Authored: Sun Oct 22 15:04:10 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sun Oct 22 15:04:10 2017 +0300
----------------------------------------------------------------------
.../ignite/internal/managers/discovery/GridDiscoveryManager.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/473bb44f/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 9eec9c3..0bf8cbe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -710,9 +710,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
// event notifications, since SPI notifies manager about all events from this listener.
if (verChanged) {
if (discoCache == null) {
- discoCache =
- incMinorTopVer && !preventReuse ?
- snapshot.discoCache.copy(nextTopVer) :
+ discoCache = incMinorTopVer && !preventReuse ? snapshot.discoCache.copy(nextTopVer) :
createDiscoCache(nextTopVer,
ctx.state().clusterState(),
locNode,
[03/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/ee014c43
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/ee014c43
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/ee014c43
Branch: refs/heads/ignite-6667
Commit: ee014c43dac159d8832bd55ace3656e8a0442f12
Parents: 6d67754
Author: ascherbakoff <al...@gmail.com>
Authored: Sat Oct 21 17:34:48 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sat Oct 21 17:34:48 2017 +0300
----------------------------------------------------------------------
.../IgniteDiscoveryCacheReuseSelfTest.java | 73 ++++++++++++++++++++
.../IgniteSpiDiscoverySelfTestSuite.java | 6 +-
2 files changed, 78 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee014c43/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
new file mode 100644
index 0000000..034bfa8
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/IgniteDiscoveryCacheReuseSelfTest.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.spi.discovery;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashMap;
+import org.apache.ignite.internal.util.typedef.G;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/**
+ * Tests discovery cache reuse between topology events.
+ */
+public class IgniteDiscoveryCacheReuseSelfTest extends GridCommonAbstractTest {
+ /**
+ * Tests correct reuse of discovery cache.
+ */
+ public void testDiscoCacheReuseOnNodeJoin() throws Exception {
+ startGridsMultiThreaded(2);
+
+ assertDiscoCacheReuse(new AffinityTopologyVersion(2, 0), new AffinityTopologyVersion(2, 1));
+ }
+
+ /**
+ * Assert disco cache reuse.
+ *
+ * @param v1 First version.
+ * @param v2 Next version.
+ */
+ private void assertDiscoCacheReuse(AffinityTopologyVersion v1,
+ AffinityTopologyVersion v2) {
+ for (Ignite ignite : G.allGrids()) {
+ GridBoundedConcurrentLinkedHashMap<AffinityTopologyVersion, DiscoCache> discoCacheHist =
+ U.field(((IgniteEx) ignite).context().discovery(), "discoCacheHist");
+
+ DiscoCache discoCache1 = discoCacheHist.get(v1);
+ DiscoCache discoCache2 = discoCacheHist.get(v2);
+
+ assertEquals(v1, discoCache1.version());
+ assertEquals(v2, discoCache2.version());
+
+ String[] props = new String[] {
+ "state", "loc", "rmtNodes", "allNodes", "srvNodes", "daemonNodes", "rmtNodesWithCaches",
+ "allCacheNodes", "allCacheNodes", "cacheGrpAffNodes", "nodeMap", "minNodeVer"
+ };
+
+ for (String prop : props)
+ assertSame(U.field(discoCache1, prop), U.field(discoCache2, prop));
+
+ assertNotSame(U.field(discoCache1, "alives"), U.field(discoCache2, "alives"));
+ assertEquals(U.field(discoCache1, "alives"), U.field(discoCache2, "alives"));
+
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/ee014c43/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
index 3335797..ff4c9c1 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
@@ -20,6 +20,7 @@ package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
import org.apache.ignite.spi.GridTcpSpiForwardingSelfTest;
import org.apache.ignite.spi.discovery.AuthenticationRestartTest;
+import org.apache.ignite.spi.discovery.IgniteDiscoveryCacheReuseSelfTest;
import org.apache.ignite.spi.discovery.tcp.IgniteClientConnectTest;
import org.apache.ignite.spi.discovery.tcp.IgniteClientReconnectMassiveShutdownTest;
import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoveryMarshallerCheckSelfTest;
@@ -94,7 +95,7 @@ public class IgniteSpiDiscoverySelfTestSuite extends TestSuite {
suite.addTest(new TestSuite(TcpDiscoveryNodeAttributesUpdateOnReconnectTest.class));
suite.addTest(new TestSuite(AuthenticationRestartTest.class));
- //Client connect
+ // Client connect.
suite.addTest(new TestSuite(IgniteClientConnectTest.class));
suite.addTest(new TestSuite(IgniteClientReconnectMassiveShutdownTest.class));
@@ -104,6 +105,9 @@ public class IgniteSpiDiscoverySelfTestSuite extends TestSuite {
suite.addTest(new TestSuite(TcpDiscoverySslSecuredUnsecuredTest.class));
suite.addTest(new TestSuite(TcpDiscoverySslTrustedUntrustedTest.class));
+ // Disco cache reuse.
+ suite.addTest(new TestSuite(IgniteDiscoveryCacheReuseSelfTest.class));
+
return suite;
}
}
[09/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/d6fe138a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/d6fe138a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/d6fe138a
Branch: refs/heads/ignite-6667
Commit: d6fe138a58b3fa711df5b8e8b075e8171042a9a6
Parents: c911b59
Author: Aleksei Scherbakov <al...@gmail.com>
Authored: Tue Oct 24 13:15:06 2017 +0300
Committer: Aleksei Scherbakov <al...@gmail.com>
Committed: Tue Oct 24 13:15:06 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/DiscoveryCustomMessage.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/d6fe138a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
index 1101695..660e883 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
@@ -93,9 +93,10 @@ public interface DiscoveryCustomMessage extends Serializable {
/**
* Creates new discovery cache in most efficient way for current message type on topology change.
+ *
* @param stgy Current cache.
* @param topVer New topology version.
- * @param discoCache @return New cache or null if message always reuses current cache.
+ * @param discoCache @return New cache or null if not applicable.
*/
public @Nullable DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy, AffinityTopologyVersion topVer,
DiscoCache discoCache);
[13/14] ignite git commit: Merge remote-tracking branch
'remotes/origin/master' into pr-2900
Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into pr-2900
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7c8ffc4e
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7c8ffc4e
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7c8ffc4e
Branch: refs/heads/ignite-6667
Commit: 7c8ffc4e91fefa16b128aa2aaef3bdbc0a276b23
Parents: 0adf1ef bbf4853
Author: sboikov <sb...@gridgain.com>
Authored: Wed Oct 25 15:19:08 2017 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Wed Oct 25 15:19:08 2017 +0300
----------------------------------------------------------------------
RELEASE_NOTES.txt | 1 +
assembly/dependencies-fabric-lgpl.xml | 2 +
assembly/dependencies-fabric.xml | 2 +
assembly/dependencies-sqlline.xml | 15 +-
examples/config/redis/example-redis.xml | 74 ++++
examples/redis/redis-example.py | 16 +-
.../persistentstore/PersistentStoreExample.java | 2 +-
.../examples/ScalarCreditRiskExample.scala | 4 +-
modules/compatibility/pom.xml | 13 +
.../org/apache/ignite/DataRegionMetrics.java | 11 +
.../configuration/CacheConfiguration.java | 2 +
.../apache/ignite/internal/IgniteKernal.java | 6 +-
.../cache/CacheAffinitySharedManager.java | 6 +-
.../cache/DynamicCacheChangeRequest.java | 18 +
.../processors/cache/GridCacheAdapter.java | 17 +
.../cache/GridCacheAffinityManager.java | 2 +-
.../processors/cache/GridCacheProcessor.java | 98 +++--
.../binary/CacheObjectBinaryProcessorImpl.java | 10 +-
.../cache/persistence/CacheDataRowAdapter.java | 3 +-
.../persistence/DataRegionMetricsImpl.java | 30 +-
.../DataRegionMetricsMXBeanImpl.java | 5 +
.../persistence/DataRegionMetricsSnapshot.java | 9 +
.../persistence/DataStorageMetricsImpl.java | 4 +-
.../IgniteCacheDatabaseSharedManager.java | 18 +-
.../persistence/file/FilePageStoreManager.java | 62 ++--
.../persistence/pagemem/PageMemoryImpl.java | 48 ++-
.../snapshot/IgniteCacheSnapshotManager.java | 3 +
.../wal/serializer/RecordV2Serializer.java | 3 +-
.../utils/PlatformConfigurationUtils.java | 46 +++
.../processors/query/GridQueryProcessor.java | 6 +-
.../ignite/internal/util/IgniteUtils.java | 62 ++--
.../visor/cache/VisorCacheConfiguration.java | 11 +-
.../ignite/mxbean/DataRegionMetricsMXBean.java | 4 +
.../spi/discovery/IgniteDiscoveryThread.java | 23 ++
.../ignite/spi/discovery/tcp/ServerImpl.java | 48 ++-
.../spi/discovery/tcp/TcpDiscoverySpi.java | 18 +
.../internal/TestRecordingCommunicationSpi.java | 12 +
.../cache/CacheRebalancingSelfTest.java | 41 +--
...niteTopologyValidatorGridSplitCacheTest.java | 358 +++++++++++++++----
.../IgniteCacheTopologySplitAbstractTest.java | 266 ++++++++++++++
.../PageEvictionMultinodeMixedRegionsTest.java | 59 +++
.../db/IgnitePdsWholeClusterRestartTest.java | 2 -
.../spi/discovery/tcp/TcpDiscoverySelfTest.java | 110 ++++++
.../IgniteCacheEvictionSelfTestSuite.java | 3 +
.../internal/processors/query/h2/H2Schema.java | 21 ++
.../processors/query/h2/IgniteH2Indexing.java | 39 +-
.../query/h2/ddl/DdlStatementsProcessor.java | 2 +-
.../query/h2/sql/GridSqlCreateTable.java | 17 +
.../query/h2/sql/GridSqlQueryParser.java | 10 +
.../cache/index/H2DynamicTableSelfTest.java | 40 ++-
.../query/IgniteSqlSchemaIndexingTest.java | 30 +-
.../processors/query/SqlSchemaSelfTest.java | 80 ++++-
.../cpp/odbc-test/src/api_robustness_test.cpp | 25 +-
modules/platforms/cpp/odbc/src/odbc.cpp | 29 +-
.../Apache.Ignite.Core.Tests.csproj | 8 +
.../ApiParity/CacheConfigurationParityTest.cs | 76 ++++
.../ClientConnectorConfigurationParityTest.cs | 39 ++
.../DataRegionConfigurationParityTest.cs | 39 ++
.../DataStorageConfigurationParityTest.cs | 53 +++
.../ApiParity/IgniteConfigurationParityTest.cs | 98 +++++
.../ApiParity/ParityTest.cs | 135 +++++++
.../QueryEntityConfigurationParityTest.cs | 49 +++
.../Cache/Affinity/AffinityAttributeTest.cs | 135 +++++++
.../Cache/Affinity/AffinityFieldTest.cs | 35 +-
.../Cache/CacheConfigurationTest.cs | 47 ++-
.../Config/full-config.xml | 7 +-
.../IgniteConfigurationSerializerTest.cs | 30 +-
.../Apache.Ignite.Core.Tests/TestUtils.cs | 49 ++-
.../Apache.Ignite.Core.csproj | 2 +
.../Affinity/AffinityKeyMappedAttribute.cs | 26 +-
.../Cache/Configuration/CacheConfiguration.cs | 157 ++++++--
.../Configuration/CacheKeyConfiguration.cs | 84 +++++
.../Cache/Configuration/QueryEntity.cs | 34 +-
.../Apache.Ignite.Core/IgniteConfiguration.cs | 17 +-
.../IgniteConfigurationSection.xsd | 66 ++++
.../Impl/Binary/BinaryReaderExtensions.cs | 27 ++
.../Impl/Binary/BinaryUtils.cs | 2 +
.../Impl/Binary/BinaryWriterExtensions.cs | 29 ++
.../Impl/Binary/IBinaryRawWriteAware.cs | 42 +++
.../Impl/Binary/Marshaller.cs | 23 +-
.../Impl/Binary/ReflectionUtils.cs | 27 ++
.../org/apache/ignite/IgniteSpringBean.java | 32 +-
.../GridSpringBeanSerializationSelfTest.java | 4 +-
.../ignite/internal/IgniteSpringBeanTest.java | 2 +-
.../GridServiceInjectionSpringResourceTest.java | 10 +-
...teSpringBeanSpringResourceInjectionTest.java | 215 +++++++++++
.../ignite/spring/injection/spring-bean.xml | 84 +++++
.../testsuites/IgniteSpringTestSuite.java | 2 +
modules/sqlline/licenses/apache-2.0.txt | 202 +++++++++++
modules/sqlline/pom.xml | 27 +-
modules/web-console/backend/app/mongo.js | 1 +
modules/web-console/frontend/.eslintrc | 2 +-
modules/web-console/frontend/app/app.js | 3 +
.../app/components/list-editable/component.js | 36 ++
.../list-editable-cols/cols.directive.js | 79 ++++
.../list-editable-cols/cols.style.scss | 51 +++
.../list-editable-cols/cols.template.pug | 29 ++
.../components/list-editable-cols/index.js | 28 ++
.../list-editable-cols/row.directive.js | 40 +++
.../app/components/list-editable/controller.js | 79 ++++
.../app/components/list-editable/index.js | 27 ++
.../app/components/list-editable/style.scss | 132 +++++++
.../app/components/list-editable/template.pug | 49 +++
.../helpers/jade/form/form-field-dropdown.pug | 2 +-
.../generator/ConfigurationGenerator.js | 5 +-
.../generator/defaults/Cluster.service.js | 2 +-
.../states/configuration/caches/memory.pug | 16 +-
.../configuration/clusters/data-storage.pug | 2 +-
.../app/primitives/form-field/index.scss | 15 +
.../frontend/app/primitives/ui-grid/index.scss | 4 +
modules/web-console/frontend/package.json | 2 +-
.../frontend/public/images/icons/index.js | 2 +
.../frontend/public/images/icons/info.svg | 3 +
.../frontend/public/images/icons/sort.svg | 1 +
modules/web-console/frontend/tsconfig.json | 12 +
.../agent/db/dialect/OracleMetadataDialect.java | 13 +-
.../ignite/console/agent/rest/RestExecutor.java | 4 +-
117 files changed, 3944 insertions(+), 455 deletions(-)
----------------------------------------------------------------------
[06/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/51779cd1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/51779cd1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/51779cd1
Branch: refs/heads/ignite-6667
Commit: 51779cd1b56b197c3e16c0db9fa000091529f9c7
Parents: c5d9df7
Author: ascherbakoff <al...@gmail.com>
Authored: Sun Oct 22 15:21:24 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sun Oct 22 15:21:24 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/GridDiscoveryManager.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/51779cd1/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index fde8979..b1af364 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -711,10 +711,10 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (verChanged) {
if (discoCache == null) {
discoCache = incMinorTopVer && !preventReuse ? snapshot.discoCache.copy(nextTopVer) :
- createDiscoCache(nextTopVer,
- ctx.state().clusterState(),
- locNode,
- topSnapshot);
+ createDiscoCache(nextTopVer,
+ ctx.state().clusterState(),
+ locNode,
+ topSnapshot);
}
discoCacheHist.put(nextTopVer, discoCache);
[08/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c911b590
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c911b590
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c911b590
Branch: refs/heads/ignite-6667
Commit: c911b590c9e7d5143ff60f68753e54392ea1e86f
Parents: 44c4c57
Author: ascherbakoff <al...@gmail.com>
Authored: Tue Oct 24 01:37:37 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Tue Oct 24 01:37:37 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/DiscoCache.java | 26 +---
.../discovery/DiscoveryCustomMessage.java | 12 +-
.../discovery/GridDiscoveryManager.java | 141 ++++++++++++++-----
.../discovery/ReuseDiscoCacheStrategy.java | 65 +++++++++
.../cache/CacheAffinityChangeMessage.java | 16 +++
.../ClientCacheChangeDiscoveryMessage.java | 17 +++
.../ClientCacheChangeDummyDiscoveryMessage.java | 17 +++
.../cache/DynamicCacheChangeBatch.java | 19 ++-
.../binary/MetadataUpdateAcceptedMessage.java | 16 +++
.../binary/MetadataUpdateProposedMessage.java | 16 +++
.../cluster/ChangeGlobalStateFinishMessage.java | 17 +++
.../cluster/ChangeGlobalStateMessage.java | 19 ++-
.../continuous/AbstractContinuousMessage.java | 18 +++
.../StartRoutineAckDiscoveryMessage.java | 2 +-
.../StartRoutineDiscoveryMessage.java | 2 +-
.../StopRoutineAckDiscoveryMessage.java | 2 +-
.../continuous/StopRoutineDiscoveryMessage.java | 2 +-
.../marshaller/MappingAcceptedMessage.java | 16 +++
.../marshaller/MappingProposedMessage.java | 17 +++
.../message/SchemaAbstractDiscoveryMessage.java | 17 +++
.../message/SchemaProposeDiscoveryMessage.java | 3 +-
21 files changed, 393 insertions(+), 67 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
index 7206223..0578c57 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoCache.java
@@ -71,10 +71,10 @@ public class DiscoCache {
private final Map<Integer, List<ClusterNode>> cacheGrpAffNodes;
/** Node map. */
- private final Map<UUID, ClusterNode> nodeMap;
+ final Map<UUID, ClusterNode> nodeMap;
/** Alive nodes. */
- private final Set<UUID> alives = new GridConcurrentHashSet<>();
+ final Set<UUID> alives = new GridConcurrentHashSet<>();
/** */
private final IgniteProductVersion minNodeVer;
@@ -109,7 +109,7 @@ public class DiscoCache {
Map<Integer, List<ClusterNode>> cacheGrpAffNodes,
Map<UUID, ClusterNode> nodeMap,
Set<UUID> alives,
- @Nullable IgniteProductVersion minVer) {
+ IgniteProductVersion minVer) {
this.topVer = topVer;
this.state = state;
this.loc = loc;
@@ -122,18 +122,6 @@ public class DiscoCache {
this.cacheGrpAffNodes = cacheGrpAffNodes;
this.nodeMap = nodeMap;
this.alives.addAll(alives);
-
- if (minVer == null) {
- for (int i = 0; i < allNodes.size(); i++) {
- ClusterNode node = allNodes.get(i);
-
- if (minVer == null)
- minVer = node.version();
- else if (node.version().compareTo(minVer) < 0)
- minVer = node.version();
- }
- }
-
minNodeVer = minVer;
}
@@ -333,10 +321,10 @@ public class DiscoCache {
* @param ver Version.
* @return Copy.
*/
- public DiscoCache copy(AffinityTopologyVersion ver) {
+ public DiscoCache copy(@Nullable AffinityTopologyVersion ver, @Nullable DiscoveryDataClusterState st) {
return new DiscoCache(
- ver,
- state,
+ ver == null ? topVer : ver,
+ st == null ? state : st,
loc,
rmtNodes,
allNodes,
@@ -354,4 +342,4 @@ public class DiscoCache {
@Override public String toString() {
return S.toString(DiscoCache.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
index f908b59..1101695 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
@@ -18,6 +18,7 @@
package org.apache.ignite.internal.managers.discovery;
import java.io.Serializable;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddFinishedMessage;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddedMessage;
@@ -89,4 +90,13 @@ public interface DiscoveryCustomMessage extends Serializable {
* @return {@code true} if message can be modified during listener notification. Changes will be send to next nodes.
*/
public boolean isMutable();
-}
\ No newline at end of file
+
+ /**
+ * Creates new discovery cache in most efficient way for current message type on topology change.
+ * @param stgy Current cache.
+ * @param topVer New topology version.
+ * @param discoCache @return New cache or null if message always reuses current cache.
+ */
+ public @Nullable DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy, AffinityTopologyVersion topVer,
+ DiscoCache discoCache);
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 61be4c2..a6e9e56 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -69,6 +69,7 @@ import org.apache.ignite.internal.managers.GridManagerAdapter;
import org.apache.ignite.internal.managers.communication.GridIoManager;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
import org.apache.ignite.internal.processors.cache.CacheGroupDescriptor;
import org.apache.ignite.internal.processors.cache.ClientCacheChangeDummyDiscoveryMessage;
import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
@@ -77,6 +78,7 @@ import org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotDiscoveryMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateFinishMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
import org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState;
@@ -103,6 +105,7 @@ import org.apache.ignite.internal.util.worker.GridWorker;
import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.security.SecurityCredentials;
import org.apache.ignite.plugin.segmentation.SegmentationPolicy;
@@ -158,7 +161,7 @@ import static org.apache.ignite.plugin.segmentation.SegmentationPolicy.NOOP;
/**
* Discovery SPI manager.
*/
-public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
+public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> implements ReuseDiscoCacheStrategy {
/** Metrics update frequency. */
private static final long METRICS_UPDATE_FREQ = 3000;
@@ -600,7 +603,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
if (snapshots != null)
topHist = snapshots;
- boolean verChanged, incMinorTopVer = false, preventReuse = false;
+ boolean verChanged, incMinorTopVer = false;
if (type == EVT_NODE_METRICS_UPDATED)
verChanged = false;
@@ -655,8 +658,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
new AffinityTopologyVersion(topVer, minorTopVer),
(ChangeGlobalStateMessage)customMsg,
discoCache());
-
- preventReuse = true;
}
else if (customMsg instanceof ChangeGlobalStateFinishMessage) {
ctx.state().onStateFinishMessage((ChangeGlobalStateFinishMessage)customMsg);
@@ -673,8 +674,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
customMsg,
new AffinityTopologyVersion(topVer, minorTopVer),
node);
-
- preventReuse = customMsg instanceof DynamicCacheChangeBatch;
}
if (incMinorTopVer) {
@@ -712,11 +711,12 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
// event notifications, since SPI notifies manager about all events from this listener.
if (verChanged) {
if (discoCache == null) {
- discoCache = incMinorTopVer && !preventReuse ? snapshot.discoCache.copy(nextTopVer) :
+ discoCache = incMinorTopVer ?
+ customMsg.reuseDiscoCache(GridDiscoveryManager.this, nextTopVer, snapshot.discoCache) :
createDiscoCache(nextTopVer,
- ctx.state().clusterState(),
- locNode,
- topSnapshot);
+ ctx.state().clusterState(),
+ locNode,
+ topSnapshot);
}
discoCacheHist.put(nextTopVer, discoCache);
@@ -2209,7 +2209,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
* @param topSnapshot Topology snapshot.
* @return Newly created discovery cache.
*/
- @NotNull private DiscoCache createDiscoCache(
+ @NotNull DiscoCache createDiscoCache(
AffinityTopologyVersion topVer,
DiscoveryDataClusterState state,
ClusterNode loc,
@@ -2248,38 +2248,19 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
Map<Integer, List<ClusterNode>> allCacheNodes = U.newHashMap(allNodes.size());
Map<Integer, List<ClusterNode>> cacheGrpAffNodes = U.newHashMap(allNodes.size());
-
Set<ClusterNode> rmtNodesWithCaches = new TreeSet<>(GridNodeOrderComparator.INSTANCE);
- for (ClusterNode node : allNodes) {
- assert node.order() != 0 : "Invalid node order [locNode=" + loc + ", node=" + node + ']';
- assert !node.isDaemon();
+ fillAffinityNodeCaches(allNodes, allCacheNodes, cacheGrpAffNodes, rmtNodesWithCaches);
- for (Map.Entry<Integer, CacheGroupAffinity> e : registeredCacheGrps.entrySet()) {
- CacheGroupAffinity grpAff = e.getValue();
- Integer grpId = e.getKey();
-
- if (CU.affinityNode(node, grpAff.cacheFilter)) {
- List<ClusterNode> nodes = cacheGrpAffNodes.get(grpId);
+ IgniteProductVersion minVer = null;
- if (nodes == null)
- cacheGrpAffNodes.put(grpId, nodes = new ArrayList<>());
-
- nodes.add(node);
- }
- }
-
- for (Map.Entry<String, CachePredicate> entry : registeredCaches.entrySet()) {
- String cacheName = entry.getKey();
- CachePredicate filter = entry.getValue();
+ for (int i = 0; i < allNodes.size(); i++) {
+ ClusterNode node = allNodes.get(i);
- if (filter.cacheNode(node)) {
- if (!node.isLocal())
- rmtNodesWithCaches.add(node);
-
- addToMap(allCacheNodes, cacheName, node);
- }
- }
+ if (minVer == null)
+ minVer = node.version();
+ else if (node.version().compareTo(minVer) < 0)
+ minVer = node.version();
}
return new DiscoCache(
@@ -2295,7 +2276,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
Collections.unmodifiableMap(cacheGrpAffNodes),
Collections.unmodifiableMap(nodeMap),
alives,
- null);
+ minVer);
}
/**
@@ -3047,4 +3028,86 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
return clientNodes.get(node.id());
}
}
+
+ /**
+ * Fills affinity node caches.
+ *
+ * @param allNodes All nodes.
+ * @param allCacheNodes All cache nodes.
+ * @param cacheGrpAffNodes Cache group aff nodes.
+ * @param rmtNodesWithCaches Rmt nodes with caches.
+ */
+ private void fillAffinityNodeCaches(List<ClusterNode> allNodes, Map<Integer, List<ClusterNode>> allCacheNodes,
+ Map<Integer, List<ClusterNode>> cacheGrpAffNodes, Set<ClusterNode> rmtNodesWithCaches) {
+ for (ClusterNode node : allNodes) {
+ assert node.order() != 0 : "Invalid node order [locNode=" + localNode() + ", node=" + node + ']';
+ assert !node.isDaemon();
+
+ for (Map.Entry<Integer, CacheGroupAffinity> e : registeredCacheGrps.entrySet()) {
+ CacheGroupAffinity grpAff = e.getValue();
+ Integer grpId = e.getKey();
+
+ if (CU.affinityNode(node, grpAff.cacheFilter)) {
+ List<ClusterNode> nodes = cacheGrpAffNodes.get(grpId);
+
+ if (nodes == null)
+ cacheGrpAffNodes.put(grpId, nodes = new ArrayList<>());
+
+ nodes.add(node);
+ }
+ }
+
+ for (Map.Entry<String, CachePredicate> entry : registeredCaches.entrySet()) {
+ String cacheName = entry.getKey();
+ CachePredicate filter = entry.getValue();
+
+ if (filter.cacheNode(node)) {
+ if (!node.isLocal())
+ rmtNodesWithCaches.add(node);
+
+ addToMap(allCacheNodes, cacheName, node);
+ }
+ }
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public DiscoCache apply(DynamicCacheChangeBatch msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ List<ClusterNode> allNodes = discoCache.allNodes();
+ Map<Integer, List<ClusterNode>> allCacheNodes = U.newHashMap(allNodes.size());
+ Map<Integer, List<ClusterNode>> cacheGrpAffNodes = U.newHashMap(allNodes.size());
+ Set<ClusterNode> rmtNodesWithCaches = new TreeSet<>(GridNodeOrderComparator.INSTANCE);
+
+ fillAffinityNodeCaches(allNodes, allCacheNodes, cacheGrpAffNodes, rmtNodesWithCaches);
+
+ return new DiscoCache(
+ topVer,
+ discoCache.state(),
+ discoCache.localNode(),
+ discoCache.remoteNodes(),
+ allNodes,
+ discoCache.serverNodes(),
+ discoCache.daemonNodes(),
+ U.sealList(rmtNodesWithCaches),
+ allCacheNodes,
+ cacheGrpAffNodes,
+ discoCache.nodeMap,
+ discoCache.alives,
+ discoCache.minimumNodeVersion());
+ }
+
+ /** {@inheritDoc} */
+ @Override public DiscoCache apply(CacheAffinityChangeMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return discoCache.copy(topVer, null);
+ }
+
+ /** {@inheritDoc} */
+ @Override public DiscoCache apply(SnapshotDiscoveryMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return discoCache.copy(topVer, null);
+ }
+
+ /** {@inheritDoc} */
+ @Override public DiscoCache apply(ChangeGlobalStateMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return discoCache.copy(topVer, ctx.state().clusterState());
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java
new file mode 100644
index 0000000..7c5652b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/ReuseDiscoCacheStrategy.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.managers.discovery;
+
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.CacheAffinityChangeMessage;
+import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.SnapshotDiscoveryMessage;
+import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
+
+/**
+ * Defines messages which are willing to reuse discovery cache for efficiency reasons.
+ */
+public interface ReuseDiscoCacheStrategy {
+ /**
+ * Create discovery cache for {@link DynamicCacheChangeBatch} message.
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache apply(DynamicCacheChangeBatch msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
+
+ /**
+ * Create discovery cache for {@link CacheAffinityChangeMessage} message.
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache apply(CacheAffinityChangeMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
+
+ /**
+ * Create discovery cache for {@link SnapshotDiscoveryMessage} message.
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache apply(SnapshotDiscoveryMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
+
+ /**
+ * Create discovery cache for {@link ChangeGlobalStateMessage} message.
+ *
+ * @param msg Message.
+ * @param topVer Topology version.
+ * @param discoCache Disco cache.
+ */
+ public DiscoCache apply(ChangeGlobalStateMessage msg, AffinityTopologyVersion topVer, DiscoCache discoCache);
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
index 8cff65e..8be4a5c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinityChangeMessage.java
@@ -20,7 +20,10 @@ package org.apache.ignite.internal.processors.cache;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionExchangeId;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsFullMessage;
@@ -153,6 +156,19 @@ public class CacheAffinityChangeMessage implements DiscoveryCustomMessage {
return false;
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return stgy.apply(this, topVer, discoCache);
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(CacheAffinityChangeMessage.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
index 3d120f7..1be8fcd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDiscoveryMessage.java
@@ -22,7 +22,11 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -169,6 +173,19 @@ public class ClientCacheChangeDiscoveryMessage implements DiscoveryCustomMessage
return false;
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(ClientCacheChangeDiscoveryMessage.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
index 44f6002..a9180c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClientCacheChangeDummyDiscoveryMessage.java
@@ -20,7 +20,11 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -101,6 +105,19 @@ public class ClientCacheChangeDummyDiscoveryMessage implements DiscoveryCustomMe
throw new UnsupportedOperationException();
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(ClientCacheChangeDummyDiscoveryMessage.class, this,
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
index d5c820f..f01857e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/DynamicCacheChangeBatch.java
@@ -19,7 +19,11 @@ package org.apache.ignite.internal.processors.cache;
import java.util.Collection;
import java.util.Set;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -74,6 +78,19 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
}
/**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return stgy.apply(this, topVer, discoCache);
+ }
+
+ /**
* @return Collection of change requests.
*/
public Collection<DynamicCacheChangeRequest> requests() {
@@ -137,4 +154,4 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
@Override public String toString() {
return S.toString(DynamicCacheChangeBatch.class, this);
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
index ef5370e..c195731 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateAcceptedMessage.java
@@ -16,7 +16,10 @@
*/
package org.apache.ignite.internal.processors.cache.binary;
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -67,6 +70,19 @@ public class MetadataUpdateAcceptedMessage implements DiscoveryCustomMessage {
return true;
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
/** */
int acceptedVersion() {
return acceptedVer;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
index 715e668..160faf3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/MetadataUpdateProposedMessage.java
@@ -20,7 +20,10 @@ import java.util.UUID;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.binary.BinaryMetadataHandler;
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -131,6 +134,19 @@ public final class MetadataUpdateProposedMessage implements DiscoveryCustomMessa
}
/**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
+ /**
* @param err Error caused this update to be rejected.
*/
void markRejected(BinaryObjectException err) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
index 0771198..79342cf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateFinishMessage.java
@@ -18,7 +18,11 @@
package org.apache.ignite.internal.processors.cluster;
import java.util.UUID;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -79,6 +83,19 @@ public class ChangeGlobalStateFinishMessage implements DiscoveryCustomMessage {
return false;
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(ChangeGlobalStateFinishMessage.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
index 6579399..eed04fc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ChangeGlobalStateMessage.java
@@ -19,7 +19,11 @@ package org.apache.ignite.internal.processors.cluster;
import java.util.List;
import java.util.UUID;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.ExchangeActions;
import org.apache.ignite.internal.processors.cache.StoredCacheData;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
@@ -112,7 +116,20 @@ public class ChangeGlobalStateMessage implements DiscoveryCustomMessage {
return false;
}
- /**
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return stgy.apply(this, topVer, discoCache);
+ }
+
+ /**
* @return Node initiated state change.
*/
public UUID initiatorNodeId() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
index 01a95df..8279b07 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/AbstractContinuousMessage.java
@@ -18,8 +18,13 @@
package org.apache.ignite.internal.processors.continuous;
import java.util.UUID;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.lang.IgniteUuid;
+import org.jetbrains.annotations.Nullable;
/**
*
@@ -57,4 +62,17 @@ public abstract class AbstractContinuousMessage implements DiscoveryCustomMessag
@Override public boolean isMutable() {
return false;
}
+
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineAckDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineAckDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineAckDiscoveryMessage.java
index 1765f2c..4063e05 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineAckDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineAckDiscoveryMessage.java
@@ -92,4 +92,4 @@ public class StartRoutineAckDiscoveryMessage extends AbstractContinuousMessage {
@Override public String toString() {
return S.toString(StartRoutineAckDiscoveryMessage.class, this, "routineId", routineId());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineDiscoveryMessage.java
index 320226b..82996d4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineDiscoveryMessage.java
@@ -132,4 +132,4 @@ public class StartRoutineDiscoveryMessage extends AbstractContinuousMessage {
@Override public String toString() {
return S.toString(StartRoutineDiscoveryMessage.class, this, "routineId", routineId());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineAckDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineAckDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineAckDiscoveryMessage.java
index e6305c7..79d8b29 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineAckDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineAckDiscoveryMessage.java
@@ -45,4 +45,4 @@ public class StopRoutineAckDiscoveryMessage extends AbstractContinuousMessage {
@Override public String toString() {
return S.toString(StopRoutineAckDiscoveryMessage.class, this, "routineId", routineId());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineDiscoveryMessage.java
index 30d12d1..f6b18fd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineDiscoveryMessage.java
@@ -45,4 +45,4 @@ public class StopRoutineDiscoveryMessage extends AbstractContinuousMessage {
@Override public String toString() {
return S.toString(StopRoutineDiscoveryMessage.class, this, "routineId", routineId());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
index 23c2858..52eac25 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingAcceptedMessage.java
@@ -17,7 +17,10 @@
package org.apache.ignite.internal.processors.marshaller;
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
import org.jetbrains.annotations.Nullable;
@@ -59,6 +62,19 @@ public class MappingAcceptedMessage implements DiscoveryCustomMessage {
return false;
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
/** */
MarshallerMappingItem getMappingItem() {
return item;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
index 33a2168..8c2abaa 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MappingProposedMessage.java
@@ -18,7 +18,11 @@
package org.apache.ignite.internal.processors.marshaller;
import java.util.UUID;
+
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
@@ -94,6 +98,19 @@ public class MappingProposedMessage implements DiscoveryCustomMessage {
return true;
}
+ /**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
/** */
MarshallerMappingItem mappingItem() {
return mappingItem;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
index 9fdc6c3..e055606 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
@@ -17,11 +17,15 @@
package org.apache.ignite.internal.processors.query.schema.message;
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
+import org.apache.ignite.internal.managers.discovery.ReuseDiscoCacheStrategy;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.query.schema.operation.SchemaAbstractOperation;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteUuid;
+import org.jetbrains.annotations.Nullable;
/**
* Abstract discovery message for schema operations.
@@ -52,6 +56,19 @@ public abstract class SchemaAbstractDiscoveryMessage implements DiscoveryCustomM
}
/**
+ * {@inheritDoc}
+ * @param stgy Reuse strategy.
+ * @param topVer New topology version.
+ * @param discoCache Discovery cache
+ *
+ * @return Reused discovery cache if possible.
+ */
+ @Nullable @Override public DiscoCache reuseDiscoCache(ReuseDiscoCacheStrategy stgy,
+ AffinityTopologyVersion topVer, DiscoCache discoCache) {
+ return null;
+ }
+
+ /**
* @return Operation.
*/
public SchemaAbstractOperation operation() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/c911b590/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
index 5fd2606..0e1270b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
@@ -99,9 +99,8 @@ public class SchemaProposeDiscoveryMessage extends SchemaAbstractDiscoveryMessag
* @param err Error.
*/
public void onError(SchemaOperationException err) {
- if (!hasError()) {
+ if (!hasError())
this.err = err;
- }
}
/**
[05/14] ignite git commit: IGNITE-6667 wip.
Posted by sb...@apache.org.
IGNITE-6667 wip.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c5d9df7c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c5d9df7c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c5d9df7c
Branch: refs/heads/ignite-6667
Commit: c5d9df7cec45ebd67458cdda0f917683a66e392e
Parents: 473bb44
Author: ascherbakoff <al...@gmail.com>
Authored: Sun Oct 22 15:18:22 2017 +0300
Committer: ascherbakoff <al...@gmail.com>
Committed: Sun Oct 22 15:18:22 2017 +0300
----------------------------------------------------------------------
.../internal/managers/discovery/GridDiscoveryManager.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c5d9df7c/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 0bf8cbe..fde8979 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -354,7 +354,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
*/
public void addCacheGroup(CacheGroupDescriptor grpDesc, IgnitePredicate<ClusterNode> filter, CacheMode cacheMode) {
CacheGroupAffinity old = registeredCacheGrps.put(grpDesc.groupId(),
- new CacheGroupAffinity(grpDesc.cacheOrGroupName(), filter, cacheMode));
+ new CacheGroupAffinity(grpDesc.cacheOrGroupName(), filter, cacheMode));
assert old == null : old;
}
@@ -1590,8 +1590,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
}
if (!locJoin.isDone())
- locJoin.onDone(
- new IgniteCheckedException("Failed to wait for local node joined event (grid is stopping)."));
+ locJoin.onDone(new IgniteCheckedException("Failed to wait for local node joined event (grid is stopping)."));
}
/** {@inheritDoc} */
@@ -2294,7 +2293,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
Collections.unmodifiableMap(cacheGrpAffNodes),
Collections.unmodifiableMap(nodeMap),
alives,
- null);
+ null);
}
/**