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 2015/05/15 16:02:03 UTC

[01/47] incubator-ignite git commit: # IGNITE-831 Create parent class for custom messages: DiscoveryCustomMessage.

Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-709_3 77ef2e99f -> fcaf3f511


# IGNITE-831 Create parent class for custom messages: DiscoveryCustomMessage.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/1a4de262
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/1a4de262
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/1a4de262

Branch: refs/heads/ignite-709_3
Commit: 1a4de262b9a2f0d2bd589473546dd6ad3008a248
Parents: f9f7662
Author: sevdokimov <se...@jetbrains.com>
Authored: Mon May 4 12:05:49 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Mon May 4 12:05:49 2015 +0300

----------------------------------------------------------------------
 .../discovery/DiscoveryCustomMessage.java       | 32 +++++++++++++++++
 .../discovery/GridDiscoveryManager.java         | 38 +++++++++++---------
 .../cache/DynamicCacheChangeBatch.java          |  9 +++--
 .../ignite/spi/discovery/DiscoverySpi.java      |  4 +--
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  3 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  3 +-
 6 files changed, 67 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1a4de262/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
new file mode 100644
index 0000000..c797ebd
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/DiscoveryCustomMessage.java
@@ -0,0 +1,32 @@
+/*
+ * 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 java.io.*;
+
+/**
+ *
+ */
+public interface DiscoveryCustomMessage extends Serializable {
+    /**
+     * Whether or not minor version of topology should be increased on message receive.
+     *
+     * @return {@code true} if minor topology version should be increased.
+     */
+    public boolean forwardMinorVersion();
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1a4de262/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 0950774..0df7d5f 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
@@ -279,19 +279,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
         }
     }
 
-    /**
-     * @param evtType Event type.
-     * @return Next affinity topology version.
-     */
-    private AffinityTopologyVersion nextTopologyVersion(int evtType, long topVer) {
-        if (evtType == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT)
-            minorTopVer++;
-        else if (evtType != EVT_NODE_METRICS_UPDATED)
-            minorTopVer = 0;
-
-        return new AffinityTopologyVersion(topVer, minorTopVer);
-    }
-
     /** {@inheritDoc} */
     @Override public void start() throws IgniteCheckedException {
         long totSysMemory = -1;
@@ -363,7 +350,26 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 if (snapshots != null)
                     topHist = snapshots;
 
-                AffinityTopologyVersion nextTopVer = nextTopologyVersion(type, topVer);
+                boolean verChanged;
+
+                if (type == EVT_NODE_METRICS_UPDATED)
+                    verChanged = false;
+                else if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
+                    if (data != null && ((DiscoveryCustomMessage)data).forwardMinorVersion()) {
+                        minorTopVer++;
+
+                        verChanged = true;
+                    }
+                    else
+                        verChanged = false;
+                }
+                else {
+                    minorTopVer = 0;
+
+                    verChanged = true;
+                }
+
+                AffinityTopologyVersion nextTopVer = new AffinityTopologyVersion(topVer, minorTopVer);
 
                 if (type == EVT_NODE_FAILED || type == EVT_NODE_LEFT) {
                     for (DiscoCache c : discoCacheHist.values())
@@ -385,7 +391,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 // 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 (type != EVT_NODE_METRICS_UPDATED) {
+                if (verChanged) {
                     DiscoCache cache = new DiscoCache(locNode, F.view(topSnapshot, F.remoteNodes(locNode.id())));
 
                     discoCacheHist.put(nextTopVer, cache);
@@ -1386,7 +1392,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     /**
      * @param evt Event.
      */
-    public void sendCustomEvent(Serializable evt) {
+    public void sendCustomEvent(DiscoveryCustomMessage evt) {
         getSpi().sendCustomEvent(evt);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1a4de262/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 ac3660e..0257307 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
@@ -17,16 +17,16 @@
 
 package org.apache.ignite.internal.processors.cache;
 
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.util.tostring.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 
-import java.io.*;
 import java.util.*;
 
 /**
  * Cache change batch.
  */
-public class DynamicCacheChangeBatch implements Serializable {
+public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
     /** */
     private static final long serialVersionUID = 0L;
 
@@ -72,4 +72,9 @@ public class DynamicCacheChangeBatch implements Serializable {
     @Override public String toString() {
         return S.toString(DynamicCacheChangeBatch.class, this);
     }
+
+    /** {@inheritDoc} */
+    @Override public boolean forwardMinorVersion() {
+        return true;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1a4de262/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
index 7560999..247ff67 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
@@ -18,11 +18,11 @@
 package org.apache.ignite.spi.discovery;
 
 import org.apache.ignite.cluster.*;
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.spi.*;
 import org.jetbrains.annotations.*;
 
-import java.io.*;
 import java.util.*;
 
 /**
@@ -143,7 +143,7 @@ public interface DiscoverySpi extends IgniteSpi {
      * Sends custom message across the ring.
      * @param evt Event.
      */
-    public void sendCustomEvent(Serializable evt);
+    public void sendCustomEvent(DiscoveryCustomMessage evt);
 
     /**
      * Initiates failure of provided node.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1a4de262/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index c319f9e..59f4708 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -20,6 +20,7 @@ package org.apache.ignite.spi.discovery.tcp;
 import org.apache.ignite.*;
 import org.apache.ignite.cache.*;
 import org.apache.ignite.cluster.*;
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
@@ -388,7 +389,7 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
     }
 
     /** {@inheritDoc} */
-    @Override public void sendCustomEvent(Serializable evt) {
+    @Override public void sendCustomEvent(DiscoveryCustomMessage evt) {
         try {
             sockWriter.sendMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(evt)));
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/1a4de262/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index c6b8e90..eba0528 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -24,6 +24,7 @@ import org.apache.ignite.configuration.*;
 import org.apache.ignite.events.DiscoveryEvent;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.events.*;
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.processors.security.*;
 import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.future.*;
@@ -1248,7 +1249,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
     }
 
     /** {@inheritDoc} */
-    @Override public void sendCustomEvent(Serializable evt) {
+    @Override public void sendCustomEvent(DiscoveryCustomMessage evt) {
         try {
             msgWorker.addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(evt)));
         }


[05/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-sprint-5' into ignite-836_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-sprint-5' into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e040b540
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e040b540
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e040b540

Branch: refs/heads/ignite-709_3
Commit: e040b5403733d053db16d87c10fcfbb5ace5dd86
Parents: f382ebc 5f8f6f4
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 16:46:09 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 16:46:09 2015 +0300

----------------------------------------------------------------------
 .../streaming/wordcount/CacheConfig.java        |   5 -
 .../config/grid-client-config.properties        |  50 +-
 .../ClientPropertiesConfigurationSelfTest.java  |  12 +-
 .../java/org/apache/ignite/IgniteCache.java     |   5 +
 .../org/apache/ignite/IgniteJdbcDriver.java     |  81 ++-
 .../ignite/compute/ComputeTaskAdapter.java      |  14 +-
 .../client/GridClientConfiguration.java         |   2 +-
 .../processors/cache/GridCacheAdapter.java      | 503 +++++++++----------
 .../processors/cache/GridCacheProcessor.java    | 109 ++--
 .../apache/ignite/lang/IgniteAsyncSupport.java  |   4 +-
 .../cache/GridCacheSwapReloadSelfTest.java      |  20 +-
 .../cache/IgniteCachePeekModesAbstractTest.java |  15 +-
 .../dht/GridCacheDhtPreloadSelfTest.java        |   2 +-
 ...idFileSwapSpaceSpiMultithreadedLoadTest.java |   4 +-
 .../cache/GridCacheOffHeapAndSwapSelfTest.java  |  11 +-
 .../cache/GridCacheOffHeapSelfTest.java         |  11 +-
 pom.xml                                         |  39 +-
 17 files changed, 438 insertions(+), 449 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e040b540/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------


[34/47] incubator-ignite git commit: IGNITE-836 Fix GridEventConsumeSelfTest

Posted by sb...@apache.org.
IGNITE-836 Fix GridEventConsumeSelfTest


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/63fc5e7b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/63fc5e7b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/63fc5e7b

Branch: refs/heads/ignite-709_3
Commit: 63fc5e7b91ff9ad440d1c49606cd432593c67dd7
Parents: 784c088
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 13:48:49 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 13:48:49 2015 +0300

----------------------------------------------------------------------
 .../internal/processors/continuous/GridEventConsumeSelfTest.java  | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/63fc5e7b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
index d219a60..63ec6d6 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
@@ -115,10 +115,7 @@ public class GridEventConsumeSelfTest extends GridCommonAbstractTest implements
             assertEquals(0, localRoutines(proc).size());
             assertEquals(0, U.<Map>field(proc, "rmtInfos").size());
             assertEquals(0, U.<Map>field(proc, "startFuts").size());
-            assertEquals(0, U.<Map>field(proc, "waitForStartAck").size());
             assertEquals(0, U.<Map>field(proc, "stopFuts").size());
-            assertEquals(0, U.<Map>field(proc, "waitForStopAck").size());
-            assertEquals(0, U.<Map>field(proc, "pending").size());
         }
     }
 


[46/47] incubator-ignite git commit: # ignite-709_3

Posted by sb...@apache.org.
# ignite-709_3


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/994cb14c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/994cb14c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/994cb14c

Branch: refs/heads/ignite-709_3
Commit: 994cb14cf0a3ad76e4294d52469cfa4f473a8df2
Parents: 77ef2e9
Author: sboikov <sb...@gridgain.com>
Authored: Fri May 15 17:56:32 2015 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri May 15 17:56:32 2015 +0300

----------------------------------------------------------------------
 .../ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/994cb14c/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
index 7fb4563..2a5616f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
@@ -113,7 +113,7 @@ public class IgniteCacheDataStructuresSelfTestSuite extends TestSuite {
         suite.addTest(new TestSuite(IgniteDataStructureUniqueNameTest.class));
 
         suite.addTest(new TestSuite(IgniteClientDataStructuresTest.class));
-        suite.addTest(new TestSuite(IgniteClientDiscoveryDataStructuresTest.class));
+        // suite.addTest(new TestSuite(IgniteClientDiscoveryDataStructuresTest.class));
 
         return suite;
     }


[19/47] incubator-ignite git commit: # IGNITE-831 Add missing "serialVersionUID = 0L".

Posted by sb...@apache.org.
# IGNITE-831 Add missing "serialVersionUID = 0L".


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/cff3c664
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/cff3c664
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/cff3c664

Branch: refs/heads/ignite-709_3
Commit: cff3c66449dfc22d8dc9ba1d25d16fcbefd7b92d
Parents: a50abae
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 6 15:40:00 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 6 15:40:56 2015 +0300

----------------------------------------------------------------------
 .../ignite/internal/managers/discovery/CustomMessageWrapper.java  | 3 +++
 .../internal/processors/continuous/GridContinuousProcessor.java   | 3 +++
 .../processors/continuous/StartRoutineAckDiscoveryMessage.java    | 3 +++
 .../processors/continuous/StartRoutineDiscoveryMessage.java       | 3 +++
 .../processors/continuous/StopRoutineAckDiscoveryMessage.java     | 3 +++
 .../processors/continuous/StopRoutineDiscoveryMessage.java        | 3 +++
 6 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cff3c664/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
index 1f02eae..3e3d708 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
@@ -25,6 +25,9 @@ import org.jetbrains.annotations.*;
  */
 class CustomMessageWrapper implements DiscoverySpiCustomMessage {
     /** */
+    private static final long serialVersionUID = 0L;
+
+    /** */
     private final DiscoveryCustomMessage delegate;
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cff3c664/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 96a0b9d..af25b46 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -960,6 +960,9 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
      */
     @SuppressWarnings("PackageVisibleInnerClass")
     static class LocalRoutineInfo implements Serializable {
+        /** */
+        private static final long serialVersionUID = 0L;
+
         /** Projection predicate. */
         private final IgnitePredicate<ClusterNode> prjPred;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cff3c664/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 2050811..5ff67d8 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
@@ -27,6 +27,9 @@ import java.util.*;
  *
  */
 public class StartRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
+    /** */
+    private static final long serialVersionUID = 0L;
+
     /** Routine ID. */
     private final UUID routineId;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cff3c664/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 1866901..4be0423 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
@@ -28,6 +28,9 @@ import java.util.*;
  *
  */
 public class StartRoutineDiscoveryMessage implements DiscoveryCustomMessage {
+    /** */
+    private static final long serialVersionUID = 0L;
+
     /** Routine ID. */
     private final UUID routineId;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cff3c664/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 2e3002b..13f7ef4 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
@@ -26,6 +26,9 @@ import java.util.*;
  *
  */
 public class StopRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
+    /** */
+    private static final long serialVersionUID = 0L;
+
     /** Routine ID. */
     private final UUID routineId;
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cff3c664/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 8b08960..4c663a2 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
@@ -27,6 +27,9 @@ import java.util.*;
  *
  */
 public class StopRoutineDiscoveryMessage implements DiscoveryCustomMessage {
+    /** */
+    private static final long serialVersionUID = 0L;
+
     /** Routine ID. */
     private final UUID routineId;
 


[06/47] incubator-ignite git commit: # Bug fix: Don't throw marshaller exception from collectExchangeData() to avoid ring hang.

Posted by sb...@apache.org.
# Bug fix: Don't throw marshaller exception from collectExchangeData() to avoid ring hang.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/32a2d906
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/32a2d906
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/32a2d906

Branch: refs/heads/ignite-709_3
Commit: 32a2d90645fb3fff8bc4c8753cb71fe451f86036
Parents: e040b54
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 19:05:26 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 19:05:26 2015 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java    | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/32a2d906/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 5336738..2639a9b 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -2216,9 +2216,8 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
     /**
      * @param nodeId Node ID.
      * @return Marshalled exchange data.
-     * @throws IgniteSpiException If failed.
      */
-    private Map<Integer, byte[]> collectExchangeData(UUID nodeId) throws IgniteSpiException {
+    private Map<Integer, byte[]> collectExchangeData(UUID nodeId) {
         Map<Integer, Serializable> data = exchange.collect(nodeId);
 
         Map<Integer, byte[]> data0 = null;
@@ -2235,8 +2234,6 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                 catch (IgniteCheckedException e) {
                     U.error(log, "Failed to marshal discovery data " +
                         "[comp=" + entry.getKey() + ", data=" + entry.getValue() + ']', e);
-
-                    throw new IgniteSpiException("Failed to marshal discovery data.", e);
                 }
             }
         }


[13/47] incubator-ignite git commit: review

Posted by sb...@apache.org.
review


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/880b59b9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/880b59b9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/880b59b9

Branch: refs/heads/ignite-709_3
Commit: 880b59b96f1cc9f2ead0d6a0e7d849f6635b2bae
Parents: 11d0d13
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed May 6 14:29:52 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed May 6 14:29:52 2015 +0300

----------------------------------------------------------------------
 .../managers/discovery/DiscoveryCustomMessage.java     |  4 ++--
 .../continuous/StartRoutineDiscoveryMessage.java       | 13 ++++++++-----
 2 files changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/880b59b9/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 c797ebd..dcb0cea 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
@@ -5,9 +5,9 @@
  * 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.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/880b59b9/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 7fa78b6..492a1e7 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
@@ -5,9 +5,9 @@
  * 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.
@@ -19,8 +19,8 @@ package org.apache.ignite.internal.processors.continuous;
 
 import org.apache.ignite.*;
 import org.apache.ignite.internal.managers.discovery.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.spi.*;
-import org.apache.ignite.spi.discovery.tcp.messages.*;
 
 import java.util.*;
 
@@ -46,8 +46,6 @@ public class StartRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
         this.startReqData = startReqData;
     }
 
-
-
     /** {@inheritDoc} */
     @Override public boolean forwardMinorVersion() {
         return false;
@@ -86,4 +84,9 @@ public class StartRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
     @Override public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx) {
         return new StartRoutineAckDiscoveryMessage(routineId, errs);
     }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(StartRoutineDiscoveryMessage.class, this, super.toString());
+    }
 }


[27/47] incubator-ignite git commit: IGNITE-836 Fix compilation error.

Posted by sb...@apache.org.
IGNITE-836 Fix compilation error.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/fce94eb2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/fce94eb2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/fce94eb2

Branch: refs/heads/ignite-709_3
Commit: fce94eb2ad12139945728657da2ca5c3bdf93241
Parents: 8bc46ec
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 14 17:58:47 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 14 17:58:47 2015 +0300

----------------------------------------------------------------------
 .../org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fce94eb2/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index f32a991..7abdd4e 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -450,7 +450,7 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
 
     /** {@inheritDoc} */
     @Override public void sendCustomEvent(DiscoverySpiCustomMessage evt) {
-        if (segmentation)
+        if (segmented)
             throw new IgniteException("Failed to send custom message: client is disconnected");
 
         try {


[40/47] incubator-ignite git commit: IGNITE-709 Merge try / catch blocks,

Posted by sb...@apache.org.
IGNITE-709 Merge try / catch blocks,


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/ccc854af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/ccc854af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/ccc854af

Branch: refs/heads/ignite-709_3
Commit: ccc854af4bd073f39796a32dd597c795f45bc47d
Parents: 4fd4c24
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:35:58 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:35:58 2015 +0300

----------------------------------------------------------------------
 .../discovery/tcp/TcpClientDiscoverySpi.java    | 76 ++++++++++----------
 1 file changed, 37 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ccc854af/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index f4e1430..ad9f947 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -758,60 +758,58 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
                 }
 
                 try {
-                    try {
-                        InputStream in = new BufferedInputStream(sock.getInputStream());
+                    InputStream in = new BufferedInputStream(sock.getInputStream());
 
-                        sock.setKeepAlive(true);
-                        sock.setTcpNoDelay(true);
+                    sock.setKeepAlive(true);
+                    sock.setTcpNoDelay(true);
 
-                        while (!isInterrupted()) {
-                            TcpDiscoveryAbstractMessage msg;
+                    while (!isInterrupted()) {
+                        TcpDiscoveryAbstractMessage msg;
 
-                            try {
-                                msg = marsh.unmarshal(in, U.gridClassLoader());
-                            }
-                            catch (IgniteCheckedException e) {
-                                if (log.isDebugEnabled())
-                                    U.error(log, "Failed to read message [sock=" + sock + ", " +
-                                        "locNodeId=" + getLocalNodeId() + ", rmtNodeId=" + rmtNodeId + ']', e);
+                        try {
+                            msg = marsh.unmarshal(in, U.gridClassLoader());
+                        }
+                        catch (IgniteCheckedException e) {
+                            if (log.isDebugEnabled())
+                                U.error(log, "Failed to read message [sock=" + sock + ", " +
+                                    "locNodeId=" + getLocalNodeId() + ", rmtNodeId=" + rmtNodeId + ']', e);
 
-                                IOException ioEx = X.cause(e, IOException.class);
+                            IOException ioEx = X.cause(e, IOException.class);
 
-                                if (ioEx != null)
-                                    throw ioEx;
+                            if (ioEx != null)
+                                throw ioEx;
 
-                                ClassNotFoundException clsNotFoundEx = X.cause(e, ClassNotFoundException.class);
+                            ClassNotFoundException clsNotFoundEx = X.cause(e, ClassNotFoundException.class);
 
-                                if (clsNotFoundEx != null)
-                                    LT.warn(log, null, "Failed to read message due to ClassNotFoundException " +
-                                        "(make sure same versions of all classes are available on all nodes) " +
-                                        "[rmtNodeId=" + rmtNodeId + ", err=" + clsNotFoundEx.getMessage() + ']');
-                                else
-                                    LT.error(log, e, "Failed to read message [sock=" + sock + ", locNodeId=" +
-                                        getLocalNodeId() + ", rmtNodeId=" + rmtNodeId + ']');
+                            if (clsNotFoundEx != null)
+                                LT.warn(log, null, "Failed to read message due to ClassNotFoundException " +
+                                    "(make sure same versions of all classes are available on all nodes) " +
+                                    "[rmtNodeId=" + rmtNodeId + ", err=" + clsNotFoundEx.getMessage() + ']');
+                            else
+                                LT.error(log, e, "Failed to read message [sock=" + sock + ", locNodeId=" +
+                                    getLocalNodeId() + ", rmtNodeId=" + rmtNodeId + ']');
 
-                                continue;
-                            }
+                            continue;
+                        }
 
-                            msg.senderNodeId(rmtNodeId);
+                        msg.senderNodeId(rmtNodeId);
 
-                            if (log.isDebugEnabled())
-                                log.debug("Message has been received: " + msg);
+                        if (log.isDebugEnabled())
+                            log.debug("Message has been received: " + msg);
 
-                            stats.onMessageReceived(msg);
+                        stats.onMessageReceived(msg);
 
-                            if (ensured(msg))
-                                lastMsgId = msg.id();
+                        if (ensured(msg))
+                            lastMsgId = msg.id();
 
-                            msgWorker.addMessage(msg);
-                        }
+                        msgWorker.addMessage(msg);
                     }
-                    catch (IOException e) {
-                        msgWorker.addMessage(new SocketClosedMessage(sock));
+                }
+                catch (IOException e) {
+                    msgWorker.addMessage(new SocketClosedMessage(sock));
 
-                        if (log.isDebugEnabled())
-                            U.error(log, "Connection failed [sock=" + sock + ", locNodeId=" + getLocalNodeId() + ']', e);
-                    }
+                    if (log.isDebugEnabled())
+                        U.error(log, "Connection failed [sock=" + sock + ", locNodeId=" + getLocalNodeId() + ']', e);
                 }
                 finally {
                     U.closeQuiet(sock);


[07/47] incubator-ignite git commit: # IGNITE-831 Bug fix in TcpDiscoverySpi.processCustomMessage()

Posted by sb...@apache.org.
# IGNITE-831 Bug fix in TcpDiscoverySpi.processCustomMessage()


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/ac7597e1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/ac7597e1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/ac7597e1

Branch: refs/heads/ignite-709_3
Commit: ac7597e158c9b0ca5d9cf87945fb4adec9244040
Parents: 32a2d90
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 19:09:11 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 19:09:11 2015 +0300

----------------------------------------------------------------------
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 81 ++++++++++++--------
 1 file changed, 49 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/ac7597e1/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 2639a9b..d13a6d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -4460,7 +4460,22 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
          */
         private void processCustomMessage(TcpDiscoveryCustomEventMessage msg) {
             if (isLocalNodeCoordinator()) {
-                if (msg.verified()) {
+                boolean sndNext;
+
+                if (!msg.verified()) {
+                    msg.verify(getLocalNodeId());
+                    msg.topologyVersion(ring.topologyVersion());
+
+                    notifyDiscoveryListener(msg);
+
+                    sndNext = true;
+                }
+                else
+                    sndNext = false;
+
+                if (sndNext && ring.hasRemoteNodes())
+                    sendMessageAcrossRing(msg);
+                else {
                     stats.onRingMessageReceived(msg);
 
                     try {
@@ -4479,52 +4494,54 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                     }
 
                     addMessage(new TcpDiscoveryDiscardMessage(getLocalNodeId(), msg.id()));
-
-                    return;
                 }
+            }
+            else {
+                if (msg.verified())
+                    notifyDiscoveryListener(msg);
 
-                msg.verify(getLocalNodeId());
-                msg.topologyVersion(ring.topologyVersion());
+                if (ring.hasRemoteNodes())
+                    sendMessageAcrossRing(msg);
             }
+        }
 
-            if (msg.verified()) {
-                DiscoverySpiListener lsnr = TcpDiscoverySpi.this.lsnr;
+        /**
+         * @param msg Custom message.
+         */
+        private void notifyDiscoveryListener(TcpDiscoveryCustomEventMessage msg) {
+            DiscoverySpiListener lsnr = TcpDiscoverySpi.this.lsnr;
 
-                TcpDiscoverySpiState spiState = spiStateCopy();
+            TcpDiscoverySpiState spiState = spiStateCopy();
 
-                Map<Long, Collection<ClusterNode>> hist;
+            Map<Long, Collection<ClusterNode>> hist;
 
-                synchronized (mux) {
-                    hist = new TreeMap<>(topHist);
-                }
+            synchronized (mux) {
+                hist = new TreeMap<>(topHist);
+            }
 
-                Collection<ClusterNode> snapshot = hist.get(msg.topologyVersion());
+            Collection<ClusterNode> snapshot = hist.get(msg.topologyVersion());
 
-                if (lsnr != null && (spiState == CONNECTED || spiState == DISCONNECTING)) {
-                    assert msg.messageBytes() != null;
+            if (lsnr != null && (spiState == CONNECTED || spiState == DISCONNECTING)) {
+                assert msg.messageBytes() != null;
 
-                    TcpDiscoveryNode node = ring.node(msg.creatorNodeId());
+                TcpDiscoveryNode node = ring.node(msg.creatorNodeId());
 
-                    try {
-                        Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
+                try {
+                    Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
-                        lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
-                            msg.topologyVersion(),
-                            node,
-                            snapshot,
-                            hist,
-                            msgObj);
+                    lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
+                        msg.topologyVersion(),
+                        node,
+                        snapshot,
+                        hist,
+                        msgObj);
 
-                        msg.messageBytes(marsh.marshal(msgObj));
-                    }
-                    catch (IgniteCheckedException e) {
-                        U.error(log, "Failed to unmarshal discovery custom message.", e);
-                    }
+                    msg.messageBytes(marsh.marshal(msgObj));
+                }
+                catch (IgniteCheckedException e) {
+                    U.error(log, "Failed to unmarshal discovery custom message.", e);
                 }
             }
-
-            if (ring.hasRemoteNodes())
-                sendMessageAcrossRing(msg);
         }
     }
 


[24/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/9126679c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/9126679c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/9126679c

Branch: refs/heads/ignite-709_3
Commit: 9126679c313bb53a119faf15f6b43a9ab94cda26
Parents: 4be0438 796234f
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 7 17:37:01 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 7 17:37:01 2015 +0300

----------------------------------------------------------------------
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  73 +++++---
 ...pClientDiscoveryMarshallerCheckSelfTest.java |  99 +++++++++++
 .../tcp/TcpClientDiscoverySelfTest.java         | 178 ++++++++++++++++++-
 .../TcpClientDiscoverySpiConfigSelfTest.java    |  39 ++++
 .../IgniteSpiDiscoverySelfTestSuite.java        |   2 +
 5 files changed, 362 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9126679c/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/9126679c/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
----------------------------------------------------------------------


[22/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2d6754f8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2d6754f8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2d6754f8

Branch: refs/heads/ignite-709_3
Commit: 2d6754f8358fa96311fdc5fefa5aa0a38ecfc265
Parents: 490827e 7625bdc
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 7 16:25:58 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 7 16:25:58 2015 +0300

----------------------------------------------------------------------
 .../spi/discovery/tcp/TcpClientDiscoverySpi.java       | 13 +++++++++++++
 .../ignite/spi/discovery/tcp/TcpDiscoverySpi.java      | 13 ++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d6754f8/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d6754f8/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------


[21/47] incubator-ignite git commit: # Use ClusterNode.isClient() instead of clientRouterNodeId()

Posted by sb...@apache.org.
# Use ClusterNode.isClient() instead of clientRouterNodeId()


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/490827ea
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/490827ea
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/490827ea

Branch: refs/heads/ignite-709_3
Commit: 490827eadeaccf37d0dac341e426c60dca176b03
Parents: 0bfd42b
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 7 11:44:35 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 7 11:44:35 2015 +0300

----------------------------------------------------------------------
 .../internal/processors/continuous/GridContinuousProcessor.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/490827ea/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index af25b46..43df436 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -202,7 +202,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
                         unregisterRemote(routineId);
 
-                        if (((TcpDiscoveryNode)snd).clientRouterNodeId() != null) {
+                        if (snd.isClient()) {
                             Map<UUID, LocalRoutineInfo> infoMap = clientInfos.get(snd.id());
 
                             if (infoMap != null)
@@ -647,7 +647,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             U.error(log, "Failed to register handler [nodeId=" + node.id() + ", routineId=" + routineId + ']', e);
         }
 
-        if (((TcpDiscoveryNode)node).clientRouterNodeId() != null) {
+        if (node.isClient()) {
             Map<UUID, LocalRoutineInfo> clientRouteMap = clientInfos.get(node.id());
 
             if (clientRouteMap == null) {


[29/47] incubator-ignite git commit: # IGNITE-709 Bug fix: don't brake connection is reconnect successfull.

Posted by sb...@apache.org.
# IGNITE-709 Bug fix: don't brake connection is reconnect successfull.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/7099c560
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7099c560
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7099c560

Branch: refs/heads/ignite-709_3
Commit: 7099c560b9fbb2f9029548fc0ea8830a18d37fc9
Parents: 98743ef
Author: sevdokimov <se...@jetbrains.com>
Authored: Fri May 15 09:44:50 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Fri May 15 09:44:50 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java    | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7099c560/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 9678b87..6514b6f 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -1086,7 +1086,8 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
 
                                     timer.schedule(new TimerTask() {
                                         @Override public void run() {
-                                            reconnector.cancel();
+                                            if (reconnector.isAlive())
+                                                reconnector.cancel();
                                         }
                                     }, netTimeout);
                                 }


[31/47] incubator-ignite git commit: # ignite-836 review

Posted by sb...@apache.org.
# ignite-836 review


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/073c48c2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/073c48c2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/073c48c2

Branch: refs/heads/ignite-709_3
Commit: 073c48c2564608f699e80dcfce06328358547fa5
Parents: 778aa17
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Fri May 15 10:30:09 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Fri May 15 10:30:09 2015 +0300

----------------------------------------------------------------------
 .../ignite/internal/managers/discovery/GridDiscoveryManager.java | 4 ++--
 .../internal/processors/continuous/GridContinuousProcessor.java  | 2 --
 2 files changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/073c48c2/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 c5698a8..2678b02 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
@@ -168,8 +168,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     private final MetricsUpdater metricsUpdater = new MetricsUpdater();
 
     /** Custom event listener. */
-    private ConcurrentMap<Class<?>, List<CustomEventListener<DiscoveryCustomMessage>>> customEvtLsnrs
-        = new ConcurrentHashMap8<>();
+    private ConcurrentMap<Class<?>, List<CustomEventListener<DiscoveryCustomMessage>>> customEvtLsnrs =
+        new ConcurrentHashMap8<>();
 
     /** Map of dynamic cache filters. */
     private Map<String, CachePredicate> registeredCaches = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/073c48c2/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 43df436..1b204a6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -38,7 +38,6 @@ import org.apache.ignite.internal.util.worker.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.marshaller.*;
 import org.apache.ignite.plugin.extensions.communication.*;
-import org.apache.ignite.spi.discovery.tcp.internal.*;
 import org.apache.ignite.thread.*;
 import org.jetbrains.annotations.*;
 import org.jsr166.*;
@@ -189,7 +188,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
                             stopRoutine(msg.routineId());
                         }
-
                     }
                 }
             });


[44/47] incubator-ignite git commit: # IGNITE-709 Decreace timeout of GridCacheTcpClientDiscoveryMultiThreadedTest

Posted by sb...@apache.org.
# IGNITE-709 Decreace timeout of GridCacheTcpClientDiscoveryMultiThreadedTest


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8fcc700f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8fcc700f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8fcc700f

Branch: refs/heads/ignite-709_3
Commit: 8fcc700fb7c17c4f9579aba883feefdf744c21f5
Parents: e4b530b
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 16:29:46 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 16:29:46 2015 +0300

----------------------------------------------------------------------
 .../cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java       | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8fcc700f/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
index fc7660a..0554a10 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
@@ -23,6 +23,7 @@ import org.apache.ignite.configuration.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.spi.discovery.tcp.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+
 import java.net.*;
 import java.util.*;
 import java.util.concurrent.*;
@@ -96,7 +97,7 @@ public class GridCacheTcpClientDiscoveryMultiThreadedTest extends GridCacheAbstr
 
     /** {@inheritDoc} */
     @Override protected long getTestTimeout() {
-        return 2 * 60 * 1000;
+        return 60 * 1000;
     }
 
     /**


[35/47] incubator-ignite git commit: IGNITE-836 Fix GridEventConsumeSelfTest

Posted by sb...@apache.org.
IGNITE-836 Fix GridEventConsumeSelfTest


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/980dd472
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/980dd472
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/980dd472

Branch: refs/heads/ignite-709_3
Commit: 980dd47254f68becc69938f9420f23079fef584c
Parents: 63fc5e7
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:00:48 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:00:48 2015 +0300

----------------------------------------------------------------------
 .../processors/continuous/GridEventConsumeSelfTest.java  | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/980dd472/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
index 63ec6d6..9ff99c4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
@@ -102,17 +102,18 @@ public class GridEventConsumeSelfTest extends GridCommonAbstractTest implements
         assertEquals(GRID_CNT, grid(0).cluster().nodes().size());
 
         for (int i = 0; i < GRID_CNT; i++) {
-            IgniteKernal grid = (IgniteKernal)grid(i);
+            IgniteEx grid = grid(i);
 
             GridContinuousProcessor proc = grid.context().continuous();
 
-            if (noAutoUnsubscribe) {
-                localRoutines(proc).clear();
-
+            try {
+                if (!noAutoUnsubscribe)
+                    assertEquals(0, U.<Map>field(proc, "rmtInfos").size());
+            }
+            finally {
                 U.<Map>field(proc, "rmtInfos").clear();
             }
 
-            assertEquals(0, localRoutines(proc).size());
             assertEquals(0, U.<Map>field(proc, "rmtInfos").size());
             assertEquals(0, U.<Map>field(proc, "startFuts").size());
             assertEquals(0, U.<Map>field(proc, "stopFuts").size());


[23/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-sprint-5' into ignite-836_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-sprint-5' into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4be04388
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4be04388
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4be04388

Branch: refs/heads/ignite-709_3
Commit: 4be04388e2452db1794a3a72b7c235f551226ec6
Parents: 2d6754f 29da67c
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 7 16:26:17 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 7 16:26:17 2015 +0300

----------------------------------------------------------------------
 ...CacheLoadingConcurrentGridStartSelfTest.java | 49 ++++++++++++--------
 .../ignite/schema/generator/CodeGenerator.java  |  6 +--
 2 files changed, 32 insertions(+), 23 deletions(-)
----------------------------------------------------------------------



[25/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8c105ec2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8c105ec2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8c105ec2

Branch: refs/heads/ignite-709_3
Commit: 8c105ec2379acb78bd5fc9185cc99b9a1bc18562
Parents: 9126679 16e211e
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 13 15:09:57 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 13 15:09:57 2015 +0300

----------------------------------------------------------------------
 assembly/release-base.xml                       |    4 +-
 bin/ignite-schema-import.bat                    |    2 +-
 bin/ignite-schema-import.sh                     |    2 +-
 bin/ignite.bat                                  |    2 +-
 bin/ignite.sh                                   |    2 +-
 bin/ignitevisorcmd.bat                          |    2 +-
 bin/ignitevisorcmd.sh                           |    2 +-
 bin/include/build-classpath.bat                 |   46 +
 bin/include/build-classpath.sh                  |   71 +
 bin/include/functions.sh                        |    2 +-
 bin/include/target-classpath.bat                |   46 -
 bin/include/target-classpath.sh                 |   71 -
 examples/pom.xml                                |    2 +-
 modules/aop/pom.xml                             |    2 +-
 modules/aws/pom.xml                             |    2 +-
 modules/clients/pom.xml                         |    2 +-
 modules/cloud/pom.xml                           |    4 +-
 .../TcpDiscoveryCloudIpFinderSelfTest.java      |    2 -
 modules/codegen/pom.xml                         |    2 +-
 .../ignite/codegen/MessageCodeGenerator.java    |    4 +-
 modules/core/pom.xml                            |    2 +-
 .../internal/direct/DirectByteBufferStream.java |    4 +-
 .../communication/GridIoMessageFactory.java     |    4 +-
 .../eventstorage/GridEventStorageManager.java   |    5 +-
 .../cache/DynamicCacheDescriptor.java           |   16 +-
 .../processors/cache/GridCacheAdapter.java      |  544 +-
 .../cache/GridCacheEvictionManager.java         |    2 +-
 .../processors/cache/GridCacheMapEntry.java     |   18 +-
 .../processors/cache/GridCacheMvccManager.java  |    4 +-
 .../GridCachePartitionExchangeManager.java      |    3 +
 .../processors/cache/GridCacheProcessor.java    |  189 +-
 .../processors/cache/GridCacheProxyImpl.java    |   24 -
 .../processors/cache/GridCacheSwapManager.java  |  215 +-
 .../processors/cache/GridCacheTtlManager.java   |   42 +-
 .../processors/cache/GridCacheUtils.java        |    5 +-
 .../processors/cache/IgniteInternalCache.java   |   27 -
 ...ridCacheOptimisticCheckPreparedTxFuture.java |  434 --
 ...idCacheOptimisticCheckPreparedTxRequest.java |  232 -
 ...dCacheOptimisticCheckPreparedTxResponse.java |  179 -
 .../distributed/GridCacheTxRecoveryFuture.java  |  506 ++
 .../distributed/GridCacheTxRecoveryRequest.java |  261 +
 .../GridCacheTxRecoveryResponse.java            |  182 +
 .../GridDistributedTxRemoteAdapter.java         |    2 +-
 .../distributed/dht/GridDhtLocalPartition.java  |    2 +-
 .../cache/distributed/dht/GridDhtTxLocal.java   |   32 +-
 .../distributed/dht/GridDhtTxLocalAdapter.java  |   27 +
 .../cache/distributed/dht/GridDhtTxMapping.java |    2 +-
 .../distributed/dht/GridDhtTxPrepareFuture.java |   81 +-
 .../dht/GridPartitionedGetFuture.java           |    2 +-
 .../colocated/GridDhtColocatedLockFuture.java   |   27 +-
 .../colocated/GridDhtDetachedCacheEntry.java    |    4 +-
 .../distributed/near/GridNearCacheAdapter.java  |   10 -
 .../distributed/near/GridNearCacheEntry.java    |    4 +-
 .../distributed/near/GridNearLockFuture.java    |    5 -
 .../near/GridNearOptimisticTxPrepareFuture.java |  779 ++
 .../GridNearPessimisticTxPrepareFuture.java     |  349 +
 .../cache/distributed/near/GridNearTxLocal.java |   84 +-
 .../near/GridNearTxPrepareFuture.java           | 1050 ---
 .../near/GridNearTxPrepareFutureAdapter.java    |  226 +
 .../processors/cache/local/GridLocalCache.java  |    8 +-
 .../local/atomic/GridLocalAtomicCache.java      |   27 +-
 .../cache/query/GridCacheQueryManager.java      |   21 +-
 .../cache/query/GridCacheSqlQuery.java          |    2 +-
 .../cache/query/GridCacheTwoStepQuery.java      |   17 +
 .../cache/transactions/IgniteInternalTx.java    |    9 +-
 .../cache/transactions/IgniteTxAdapter.java     |    4 +-
 .../cache/transactions/IgniteTxHandler.java     |  100 +-
 .../transactions/IgniteTxLocalAdapter.java      |   16 +-
 .../cache/transactions/IgniteTxManager.java     |  185 +-
 .../datastreamer/DataStreamerImpl.java          |    2 +
 .../processors/igfs/IgfsDataManager.java        |    3 +
 .../processors/igfs/IgfsDeleteWorker.java       |    4 +
 .../processors/igfs/IgfsMetaManager.java        |    2 +-
 .../internal/processors/igfs/IgfsUtils.java     |   11 +-
 .../offheap/GridOffHeapProcessor.java           |   17 +
 .../processors/resource/GridResourceField.java  |   11 +
 .../processors/resource/GridResourceIoc.java    |  387 +-
 .../processors/resource/GridResourceMethod.java |   13 +
 .../resource/GridResourceProcessor.java         |    4 +-
 .../ignite/internal/util/IgniteUtils.java       |   19 +-
 .../internal/util/future/SettableFuture.java    |   86 +
 .../util/lang/GridFilteredIterator.java         |    2 +-
 .../ignite/internal/util/lang/GridFunc.java     | 7218 +++++-------------
 .../util/offheap/GridOffHeapPartitionedMap.java |    9 +
 .../unsafe/GridUnsafePartitionedMap.java        |  155 +-
 .../internal/visor/query/VisorQueryArg.java     |   14 +-
 .../internal/visor/query/VisorQueryJob.java     |    2 +
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  114 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  255 +-
 .../discovery/tcp/TcpDiscoverySpiAdapter.java   |   39 +
 .../messages/TcpDiscoveryClientPingRequest.java |   56 +
 .../TcpDiscoveryClientPingResponse.java         |   67 +
 .../resources/META-INF/classnames.properties    |   12 +-
 .../core/src/main/resources/ignite.properties   |    2 +-
 .../internal/GridUpdateNotifierSelfTest.java    |   21 +-
 .../processors/cache/CacheGetFromJobTest.java   |  110 +
 .../GridCacheAbstractFailoverSelfTest.java      |   12 +-
 .../cache/GridCacheAbstractFullApiSelfTest.java |  227 +-
 .../cache/GridCacheAbstractSelfTest.java        |    4 +-
 .../cache/OffHeapTieredTransactionSelfTest.java |  127 +
 .../GridCacheAbstractNodeRestartSelfTest.java   |  101 +-
 .../distributed/IgniteTxGetAfterStopTest.java   |  131 +
 ...xOriginatingNodeFailureAbstractSelfTest.java |    2 +-
 ...icOffHeapTieredMultiNodeFullApiSelfTest.java |   43 +
 ...ionedNearDisabledOffHeapFullApiSelfTest.java |    8 +-
 ...DisabledOffHeapMultiNodeFullApiSelfTest.java |    8 +-
 ...abledOffHeapTieredAtomicFullApiSelfTest.java |   56 +
 ...earDisabledOffHeapTieredFullApiSelfTest.java |   33 +
 ...edOffHeapTieredMultiNodeFullApiSelfTest.java |   33 +
 ...rDisabledPrimaryNodeFailureRecoveryTest.java |   31 +
 ...rtitionedPrimaryNodeFailureRecoveryTest.java |   31 +
 ...woBackupsPrimaryNodeFailureRecoveryTest.java |   37 +
 ...ePrimaryNodeFailureRecoveryAbstractTest.java |  533 ++
 ...idCacheAtomicReplicatedFailoverSelfTest.java |    6 +
 ...CacheAtomicOffHeapTieredFullApiSelfTest.java |   32 +
 ...icOffHeapTieredMultiNodeFullApiSelfTest.java |   33 +
 ...yWriteOrderOffHeapTieredFullApiSelfTest.java |   33 +
 ...erOffHeapTieredMultiNodeFullApiSelfTest.java |   33 +
 ...achePartitionedMultiNodeFullApiSelfTest.java |   15 +-
 .../GridCachePartitionedNodeRestartTest.java    |    4 +-
 ...dCachePartitionedOffHeapFullApiSelfTest.java |    8 +-
 ...titionedOffHeapMultiNodeFullApiSelfTest.java |    8 +-
 ...PartitionedOffHeapTieredFullApiSelfTest.java |   32 +
 ...edOffHeapTieredMultiNodeFullApiSelfTest.java |   72 +
 ...ePartitionedOptimisticTxNodeRestartTest.java |    4 +-
 .../GridCachePartitionedTxSalvageSelfTest.java  |   25 +-
 .../GridCacheReplicatedFailoverSelfTest.java    |    6 +
 .../GridCacheReplicatedNodeRestartSelfTest.java |   82 +
 ...idCacheReplicatedOffHeapFullApiSelfTest.java |    8 +-
 ...plicatedOffHeapMultiNodeFullApiSelfTest.java |    8 +-
 ...eReplicatedOffHeapTieredFullApiSelfTest.java |   33 +
 ...edOffHeapTieredMultiNodeFullApiSelfTest.java |   33 +
 .../IgniteCacheExpiryPolicyAbstractTest.java    |    2 +-
 .../IgniteCacheExpiryPolicyTestSuite.java       |    2 +
 .../expiry/IgniteCacheTtlCleanupSelfTest.java   |   85 +
 ...LocalAtomicOffHeapTieredFullApiSelfTest.java |   32 +
 .../GridCacheLocalOffHeapFullApiSelfTest.java   |    6 +-
 ...dCacheLocalOffHeapTieredFullApiSelfTest.java |   32 +
 .../igfs/IgfsClientCacheSelfTest.java           |  132 +
 .../processors/igfs/IgfsOneClientNodeTest.java  |  133 +
 .../processors/igfs/IgfsStreamsSelfTest.java    |    2 +-
 .../tcp/TcpClientDiscoverySelfTest.java         | 1021 ---
 .../TcpClientDiscoverySpiConfigSelfTest.java    |    2 +-
 .../tcp/TcpClientDiscoverySpiSelfTest.java      | 1089 +++
 .../ignite/testsuites/IgniteBasicTestSuite.java |    1 +
 .../IgniteCacheFailoverTestSuite.java           |   10 +-
 .../IgniteCacheFullApiSelfTestSuite.java        |   18 +
 .../testsuites/IgniteCacheRestartTestSuite.java |   11 +-
 .../testsuites/IgniteCacheTestSuite3.java       |    5 +-
 .../IgniteCacheTxRecoverySelfTestSuite.java     |    4 +
 .../ignite/testsuites/IgniteIgfsTestSuite.java  |    3 +
 .../IgniteSpiDiscoverySelfTestSuite.java        |    2 +-
 modules/extdata/p2p/pom.xml                     |    2 +-
 modules/extdata/uri/pom.xml                     |    2 +-
 modules/gce/pom.xml                             |    4 +-
 modules/geospatial/pom.xml                      |    2 +-
 modules/hadoop/pom.xml                          |    2 +-
 modules/hibernate/pom.xml                       |    2 +-
 modules/indexing/pom.xml                        |    2 +-
 .../processors/query/h2/IgniteH2Indexing.java   |    4 +
 .../processors/query/h2/sql/GridSqlQuery.java   |   20 +
 .../query/h2/sql/GridSqlQueryParser.java        |   10 +-
 .../query/h2/sql/GridSqlQuerySplitter.java      |   11 +-
 .../processors/query/h2/sql/GridSqlSelect.java  |    2 +-
 .../processors/query/h2/sql/GridSqlUnion.java   |    2 +-
 .../query/h2/twostep/GridMapQueryExecutor.java  |    3 +
 .../h2/twostep/GridReduceQueryExecutor.java     |  119 +-
 .../cache/GridCacheOffheapIndexGetSelfTest.java |  111 +
 .../IgniteCacheAbstractFieldsQuerySelfTest.java |   21 +
 ...eQueryMultiThreadedOffHeapTiredSelfTest.java |   37 +
 .../IgniteCacheQueryMultiThreadedSelfTest.java  |   29 +-
 .../IgniteCacheQuerySelfTestSuite.java          |    1 +
 .../IgniteCacheWithIndexingTestSuite.java       |    2 +
 modules/jcl/pom.xml                             |    2 +-
 modules/jta/pom.xml                             |    2 +-
 modules/log4j/pom.xml                           |    2 +-
 modules/rest-http/pom.xml                       |    2 +-
 modules/scalar/pom.xml                          |    2 +-
 .../ignite/scalar/ScalarConversions.scala       |    8 -
 modules/schedule/pom.xml                        |    2 +-
 modules/schema-import/pom.xml                   |    2 +-
 .../ignite/schema/generator/CodeGenerator.java  |   41 +-
 modules/slf4j/pom.xml                           |    2 +-
 modules/spring/pom.xml                          |    2 +-
 modules/ssh/pom.xml                             |    2 +-
 modules/tools/pom.xml                           |    2 +-
 modules/urideploy/pom.xml                       |    2 +-
 modules/visor-console/pom.xml                   |    2 +-
 .../commands/cache/VisorCacheScanCommand.scala  |    2 +-
 modules/visor-plugins/pom.xml                   |    2 +-
 modules/web/pom.xml                             |    2 +-
 modules/yardstick/pom.xml                       |    2 +-
 parent/pom.xml                                  |    2 +
 pom.xml                                         |  115 +-
 194 files changed, 9825 insertions(+), 10127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c105ec2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c105ec2/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c105ec2/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c105ec2/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index ad78f86,53522c7..134097b
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@@ -4476,74 -4517,76 +4514,110 @@@ public class TcpDiscoverySpi extends Tc
          /**
           * @param msg Message.
           */
+         private void processClientPingRequest(final TcpDiscoveryClientPingRequest msg) {
+             utilityPool.execute(new Runnable() {
+                 @Override public void run() {
+                     boolean res = pingNode(msg.nodeToPing());
+ 
+                     final ClientMessageWorker worker = clientMsgWorkers.get(msg.creatorNodeId());
+ 
+                     if (worker == null) {
+                         if (log.isDebugEnabled())
+                             log.debug("Ping request from dead client node, will be skipped: " + msg.creatorNodeId());
+                     }
+                     else {
+                         TcpDiscoveryClientPingResponse pingRes = new TcpDiscoveryClientPingResponse(
+                             getLocalNodeId(), msg.nodeToPing(), res);
+ 
+                         pingRes.verify(getLocalNodeId());
+ 
+                         worker.addMessage(pingRes);
+                     }
+                 }
+             });
+         }
+ 
+         /**
+          * @param msg Message.
+          */
+         private void processPingResponse(final TcpDiscoveryPingResponse msg) {
+             ClientMessageWorker clientWorker = clientMsgWorkers.get(msg.creatorNodeId());
+ 
+             if (clientWorker != null)
+                 clientWorker.pingResult(true);
+         }
+ 
+         /**
+          * @param msg Message.
+          */
          private void processCustomMessage(TcpDiscoveryCustomEventMessage msg) {
              if (isLocalNodeCoordinator()) {
 -                if (msg.verified()) {
 +                boolean sndNext;
 +
 +                if (!msg.verified()) {
 +                    msg.verify(getLocalNodeId());
 +                    msg.topologyVersion(ring.topologyVersion());
 +
 +                    notifyDiscoveryListener(msg);
 +
 +                    sndNext = true;
 +                }
 +                else
 +                    sndNext = false;
 +
 +                if (sndNext && ring.hasRemoteNodes())
 +                    sendMessageAcrossRing(msg);
 +                else {
                      stats.onRingMessageReceived(msg);
  
 -                    addMessage(new TcpDiscoveryDiscardMessage(getLocalNodeId(), msg.id()));
 +                    try {
 +                        DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
  
 -                    return;
 +                        DiscoverySpiCustomMessage nextMsg = msgObj.newMessageOnRingEnd();
 +
 +                        if (nextMsg != null)
 +                            addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(nextMsg)));
 +                    }
 +                    catch (IgniteCheckedException e) {
 +                        U.error(log, "Failed to unmarshal discovery custom message.", e);
 +                    }
 +
 +                    addMessage(new TcpDiscoveryDiscardMessage(getLocalNodeId(), msg.id()));
                  }
 +            }
 +            else {
 +                if (msg.verified())
 +                    notifyDiscoveryListener(msg);
  
 -                msg.verify(getLocalNodeId());
 -                msg.topologyVersion(ring.topologyVersion());
 +                if (ring.hasRemoteNodes())
 +                    sendMessageAcrossRing(msg);
              }
 +        }
  
 -            if (msg.verified()) {
 -                DiscoverySpiListener lsnr = TcpDiscoverySpi.this.lsnr;
 +        /**
 +         * @param msg Custom message.
 +         */
 +        private void notifyDiscoveryListener(TcpDiscoveryCustomEventMessage msg) {
 +            DiscoverySpiListener lsnr = TcpDiscoverySpi.this.lsnr;
  
 -                TcpDiscoverySpiState spiState = spiStateCopy();
 +            TcpDiscoverySpiState spiState = spiStateCopy();
  
 -                Map<Long, Collection<ClusterNode>> hist;
 +            Map<Long, Collection<ClusterNode>> hist;
  
 -                synchronized (mux) {
 -                    hist = new TreeMap<>(topHist);
 -                }
 +            synchronized (mux) {
 +                hist = new TreeMap<>(topHist);
 +            }
  
 -                Collection<ClusterNode> snapshot = hist.get(msg.topologyVersion());
 +            Collection<ClusterNode> snapshot = hist.get(msg.topologyVersion());
  
 -                if (lsnr != null && (spiState == CONNECTED || spiState == DISCONNECTING)) {
 -                    assert msg.messageBytes() != null;
 +            if (lsnr != null && (spiState == CONNECTED || spiState == DISCONNECTING)) {
 +                assert msg.messageBytes() != null;
  
 -                    TcpDiscoveryNode node = ring.node(msg.creatorNodeId());
 +                TcpDiscoveryNode node = ring.node(msg.creatorNodeId());
  
 +                if (node != null) {
                      try {
 -                        Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 +                        DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
  
                          lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
                              msg.topologyVersion(),

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8c105ec2/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
----------------------------------------------------------------------
diff --cc modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
index 0000000,507b3e7..da40d4e
mode 000000,100644..100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
@@@ -1,0 -1,1089 +1,1089 @@@
+ /*
+  * 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.tcp;
+ 
+ import org.apache.ignite.*;
+ import org.apache.ignite.cluster.*;
+ import org.apache.ignite.configuration.*;
+ import org.apache.ignite.events.*;
+ import org.apache.ignite.internal.*;
+ import org.apache.ignite.internal.util.*;
+ import org.apache.ignite.internal.util.io.*;
+ import org.apache.ignite.internal.util.typedef.*;
+ import org.apache.ignite.internal.util.typedef.internal.*;
+ import org.apache.ignite.lang.*;
+ import org.apache.ignite.resources.*;
+ import org.apache.ignite.spi.*;
+ import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
+ import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+ import org.apache.ignite.spi.discovery.tcp.messages.*;
+ import org.apache.ignite.testframework.*;
+ import org.apache.ignite.testframework.junits.common.*;
+ import org.jetbrains.annotations.*;
+ 
+ import java.io.*;
+ import java.net.*;
+ import java.util.*;
+ import java.util.concurrent.*;
+ import java.util.concurrent.atomic.*;
+ 
+ import static java.util.concurrent.TimeUnit.*;
+ import static org.apache.ignite.events.EventType.*;
+ 
+ /**
+  * Client-based discovery tests.
+  */
+ public class TcpClientDiscoverySpiSelfTest extends GridCommonAbstractTest {
+     /** */
+     private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+ 
+     /** */
+     private static final AtomicInteger srvIdx = new AtomicInteger();
+ 
+     /** */
+     private static final AtomicInteger clientIdx = new AtomicInteger();
+ 
+     /** */
+     private static Collection<UUID> srvNodeIds;
+ 
+     /** */
+     private static Collection<UUID> clientNodeIds;
+ 
+     /** */
+     private static int clientsPerSrv;
+ 
+     /** */
+     private static CountDownLatch srvJoinedLatch;
+ 
+     /** */
+     private static CountDownLatch srvLeftLatch;
+ 
+     /** */
+     private static CountDownLatch srvFailedLatch;
+ 
+     /** */
+     private static CountDownLatch clientJoinedLatch;
+ 
+     /** */
+     private static CountDownLatch clientLeftLatch;
+ 
+     /** */
+     private static CountDownLatch clientFailedLatch;
+ 
+     /** */
+     private static CountDownLatch msgLatch;
+ 
+     /** */
+     private UUID nodeId;
+ 
+     /** */
+     private TcpDiscoveryVmIpFinder clientIpFinder;
+ 
+     /** */
+     private long joinTimeout = TcpClientDiscoverySpi.DFLT_JOIN_TIMEOUT;
+ 
+     /** {@inheritDoc} */
+     @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+         IgniteConfiguration cfg = super.getConfiguration(gridName);
+ 
+         cfg.setLocalHost("127.0.0.1");
+ 
+         if (gridName.startsWith("server")) {
+             TcpDiscoverySpi disco = new TcpDiscoverySpi();
+ 
+             disco.setIpFinder(IP_FINDER);
+ 
+             cfg.setDiscoverySpi(disco);
+         }
+         else if (gridName.startsWith("client")) {
+             TcpClientDiscoverySpi disco = new TestTcpClientDiscovery();
+ 
+             disco.setJoinTimeout(joinTimeout);
+ 
+             TcpDiscoveryVmIpFinder ipFinder;
+ 
+             if (clientIpFinder != null)
+                 ipFinder = clientIpFinder;
+             else {
+                 ipFinder = new TcpDiscoveryVmIpFinder();
+ 
+                 String addr = new ArrayList<>(IP_FINDER.getRegisteredAddresses()).
+                     get((clientIdx.get() - 1) / clientsPerSrv).toString();
+ 
+                 if (addr.startsWith("/"))
+                     addr = addr.substring(1);
+ 
+                 ipFinder.setAddresses(Arrays.asList(addr));
+             }
+ 
+             disco.setIpFinder(ipFinder);
+ 
+             cfg.setDiscoverySpi(disco);
+ 
+             String nodeId = cfg.getNodeId().toString();
+ 
+             nodeId = "cc" + nodeId.substring(2);
+ 
+             cfg.setNodeId(UUID.fromString(nodeId));
+         }
+ 
+         if (nodeId != null)
+             cfg.setNodeId(nodeId);
+ 
+         return cfg;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override protected void beforeTest() throws Exception {
+         Collection<InetSocketAddress> addrs = IP_FINDER.getRegisteredAddresses();
+ 
+         if (!F.isEmpty(addrs))
+             IP_FINDER.unregisterAddresses(addrs);
+ 
+         srvIdx.set(0);
+         clientIdx.set(0);
+ 
+         srvNodeIds = new GridConcurrentHashSet<>();
+         clientNodeIds = new GridConcurrentHashSet<>();
+ 
+         clientsPerSrv = 2;
+     }
+ 
+     /** {@inheritDoc} */
+     @Override protected void afterTest() throws Exception {
+         stopAllClients(true);
+         stopAllServers(true);
+ 
+         nodeId = null;
+         clientIpFinder = null;
+         joinTimeout = TcpClientDiscoverySpi.DFLT_JOIN_TIMEOUT;
+ 
+         assert G.allGrids().isEmpty();
+     }
+ 
+     /**
+      *
+      * @throws Exception
+      */
+     public void testJoinTimeout() throws Exception {
+         clientIpFinder = new TcpDiscoveryVmIpFinder();
+         joinTimeout = 1000;
+ 
+         try {
+             startClientNodes(1);
+ 
+             fail("Client cannot be start because no server nodes run");
+         }
+         catch (IgniteCheckedException e) {
+             IgniteSpiException spiEx = e.getCause(IgniteSpiException.class);
+ 
+             assert spiEx != null : e;
+ 
+             assert spiEx.getMessage().contains("Join process timed out") : spiEx.getMessage();
+         }
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientNodeJoin() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         srvJoinedLatch = new CountDownLatch(3);
+         clientJoinedLatch = new CountDownLatch(3);
+ 
+         attachListeners(3, 3);
+ 
+         startClientNodes(1);
+ 
+         await(srvJoinedLatch);
+         await(clientJoinedLatch);
+ 
+         checkNodes(3, 4);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientNodeLeave() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         srvLeftLatch = new CountDownLatch(3);
+         clientLeftLatch = new CountDownLatch(2);
+ 
+         attachListeners(3, 3);
+ 
+         stopGrid("client-2");
+ 
+         await(srvLeftLatch);
+         await(clientLeftLatch);
+ 
+         checkNodes(3, 2);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientNodeFail() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         srvFailedLatch = new CountDownLatch(3);
+         clientFailedLatch = new CountDownLatch(2);
+ 
+         attachListeners(3, 3);
+ 
+         failClient(2);
+ 
+         await(srvFailedLatch);
+         await(clientFailedLatch);
+ 
+         checkNodes(3, 2);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testServerNodeJoin() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         srvJoinedLatch = new CountDownLatch(3);
+         clientJoinedLatch = new CountDownLatch(3);
+ 
+         attachListeners(3, 3);
+ 
+         startServerNodes(1);
+ 
+         await(srvJoinedLatch);
+         await(clientJoinedLatch);
+ 
+         checkNodes(4, 3);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testServerNodeLeave() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         srvLeftLatch = new CountDownLatch(2);
+         clientLeftLatch = new CountDownLatch(3);
+ 
+         attachListeners(3, 3);
+ 
+         stopGrid("server-2");
+ 
+         await(srvLeftLatch);
+         await(clientLeftLatch);
+ 
+         checkNodes(2, 3);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testServerNodeFail() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         srvFailedLatch = new CountDownLatch(2);
+         clientFailedLatch = new CountDownLatch(3);
+ 
+         attachListeners(3, 3);
+ 
+         assert U.<Map>field(G.ignite("server-2").configuration().getDiscoverySpi(), "clientMsgWorkers").isEmpty();
+ 
+         failServer(2);
+ 
+         await(srvFailedLatch);
+         await(clientFailedLatch);
+ 
+         checkNodes(2, 3);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testPing() throws Exception {
+         startServerNodes(2);
+         startClientNodes(1);
+ 
+         Ignite srv0 = G.ignite("server-0");
+         Ignite srv1 = G.ignite("server-1");
+         Ignite client = G.ignite("client-0");
+ 
+         assert ((IgniteEx)srv0).context().discovery().pingNode(client.cluster().localNode().id());
+         assert ((IgniteEx)srv1).context().discovery().pingNode(client.cluster().localNode().id());
+ 
+         assert ((IgniteEx)client).context().discovery().pingNode(srv0.cluster().localNode().id());
+         assert ((IgniteEx)client).context().discovery().pingNode(srv1.cluster().localNode().id());
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testPingFailedNodeFromClient() throws Exception {
+         startServerNodes(2);
+         startClientNodes(1);
+ 
+         Ignite srv0 = G.ignite("server-0");
+         Ignite srv1 = G.ignite("server-1");
+         Ignite client = G.ignite("client-0");
+ 
+         final CountDownLatch latch = new CountDownLatch(1);
+ 
+         ((TcpDiscoverySpi)srv1.configuration().getDiscoverySpi()).addIncomeConnectionListener(new IgniteInClosure<Socket>() {
+             @Override public void apply(Socket sock) {
+                 try {
+                     latch.await();
+                 }
+                 catch (InterruptedException e) {
+                     throw new RuntimeException(e);
+                 }
+             }
+         });
+ 
+         assert ((IgniteEx)client).context().discovery().pingNode(srv0.cluster().localNode().id());
+         assert !((IgniteEx)client).context().discovery().pingNode(srv1.cluster().localNode().id());
+ 
+         latch.countDown();
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testPingFailedClientNode() throws Exception {
+         startServerNodes(2);
+         startClientNodes(1);
+ 
+         Ignite srv0 = G.ignite("server-0");
+         Ignite srv1 = G.ignite("server-1");
+         Ignite client = G.ignite("client-0");
+ 
+         ((TcpDiscoverySpiAdapter)srv0.configuration().getDiscoverySpi()).setAckTimeout(1000);
+ 
+         ((TestTcpClientDiscovery)client.configuration().getDiscoverySpi()).pauseSocketWrite();
+ 
+         assert !((IgniteEx)srv1).context().discovery().pingNode(client.cluster().localNode().id());
+         assert !((IgniteEx)srv0).context().discovery().pingNode(client.cluster().localNode().id());
+ 
+         ((TestTcpClientDiscovery)client.configuration().getDiscoverySpi()).resumeAll();
+ 
+         assert ((IgniteEx)srv1).context().discovery().pingNode(client.cluster().localNode().id());
+         assert ((IgniteEx)srv0).context().discovery().pingNode(client.cluster().localNode().id());
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientReconnectOnRouterFail() throws Exception {
+         clientsPerSrv = 1;
+ 
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         setClientRouter(2, 0);
+ 
+         srvFailedLatch = new CountDownLatch(2);
+         clientFailedLatch = new CountDownLatch(3);
+ 
+         attachListeners(2, 3);
+ 
+         failServer(2);
+ 
+         await(srvFailedLatch);
+         await(clientFailedLatch);
+ 
+         checkNodes(2, 3);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientReconnectOnNetworkProblem() throws Exception {
+         clientsPerSrv = 1;
+ 
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         setClientRouter(2, 0);
+ 
+         srvFailedLatch = new CountDownLatch(2);
+         clientFailedLatch = new CountDownLatch(3);
+ 
+         attachListeners(2, 3);
+ 
+         ((TcpClientDiscoverySpi)G.ignite("client-2").configuration().getDiscoverySpi()).brokeConnection();
+ 
+         G.ignite("client-2").message().remoteListen(null, new MessageListener()); // Send some discovery message.
+ 
+         checkNodes(3, 3);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testGetMissedMessagesOnReconnect() throws Exception {
+         clientsPerSrv = 1;
+ 
+         startServerNodes(3);
+         startClientNodes(2);
+ 
+         checkNodes(3, 2);
+ 
+         clientLeftLatch = new CountDownLatch(1);
+         srvLeftLatch = new CountDownLatch(2);
+ 
+         attachListeners(2, 2);
+ 
+         ((TestTcpClientDiscovery)G.ignite("client-1").configuration().getDiscoverySpi()).pauseAll();
+ 
+         stopGrid("server-2");
+ 
+         await(srvLeftLatch);
+         await(srvLeftLatch);
+ 
+         Thread.sleep(500);
+ 
+         assert G.ignite("client-0").cluster().nodes().size() == 4;
+         assert G.ignite("client-1").cluster().nodes().size() == 5;
+ 
+         clientLeftLatch = new CountDownLatch(1);
+ 
+         ((TestTcpClientDiscovery)G.ignite("client-1").configuration().getDiscoverySpi()).resumeAll();
+ 
+         await(clientLeftLatch);
+ 
+         checkNodes(2, 2);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientSegmentation() throws Exception {
+         clientsPerSrv = 1;
+ 
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+ //        setClientRouter(2, 2);
+ 
+         srvFailedLatch = new CountDownLatch(2 + 2);
+         clientFailedLatch = new CountDownLatch(2 + 2);
+ 
+         attachListeners(2, 2);
+ 
+         final CountDownLatch client2StoppedLatch = new CountDownLatch(1);
+ 
+         IgnitionListener lsnr = new IgnitionListener() {
+             @Override public void onStateChange(@Nullable String name, IgniteState state) {
+                 if (state == IgniteState.STOPPED_ON_SEGMENTATION)
+                     client2StoppedLatch.countDown();
+             }
+         };
+         G.addListener(lsnr);
+ 
+         try {
+             failServer(2);
+ 
+             await(srvFailedLatch);
+             await(clientFailedLatch);
+ 
+             await(client2StoppedLatch);
+ 
+             checkNodes(2, 2);
+         }
+         finally {
+             G.removeListener(lsnr);
+         }
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientNodeJoinOneServer() throws Exception {
+         startServerNodes(1);
+ 
+         srvJoinedLatch = new CountDownLatch(1);
+ 
+         attachListeners(1, 0);
+ 
+         startClientNodes(1);
+ 
+         await(srvJoinedLatch);
+ 
+         checkNodes(1, 1);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientNodeLeaveOneServer() throws Exception {
+         startServerNodes(1);
+         startClientNodes(1);
+ 
+         checkNodes(1, 1);
+ 
+         srvLeftLatch = new CountDownLatch(1);
+ 
+         attachListeners(1, 0);
+ 
+         stopGrid("client-0");
+ 
+         await(srvLeftLatch);
+ 
+         checkNodes(1, 0);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testClientNodeFailOneServer() throws Exception {
+         startServerNodes(1);
+         startClientNodes(1);
+ 
+         checkNodes(1, 1);
+ 
+         srvFailedLatch = new CountDownLatch(1);
+ 
+         attachListeners(1, 0);
+ 
+         failClient(0);
+ 
+         await(srvFailedLatch);
+ 
+         checkNodes(1, 0);
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testMetrics() throws Exception {
+         startServerNodes(3);
+         startClientNodes(3);
+ 
+         checkNodes(3, 3);
+ 
+         attachListeners(3, 3);
+ 
+         assertTrue(checkMetrics(3, 3, 0));
+ 
+         G.ignite("client-0").compute().broadcast(F.noop());
+ 
+         assertTrue(GridTestUtils.waitForCondition(new PA() {
+             @Override public boolean apply() {
+                 return checkMetrics(3, 3, 1);
+             }
+         }, 10000));
+ 
+         checkMetrics(3, 3, 1);
+ 
+         G.ignite("server-0").compute().broadcast(F.noop());
+ 
+         assertTrue(GridTestUtils.waitForCondition(new PA() {
+             @Override public boolean apply() {
+                 return checkMetrics(3, 3, 2);
+             }
+         }, 10000));
+     }
+ 
+     /**
+      * @param srvCnt Number of Number of server nodes.
+      * @param clientCnt Number of client nodes.
+      * @param execJobsCnt Expected number of executed jobs.
+      * @return Whether metrics are correct.
+      */
+     private boolean checkMetrics(int srvCnt, int clientCnt, int execJobsCnt) {
+         for (int i = 0; i < srvCnt; i++) {
+             Ignite g = G.ignite("server-" + i);
+ 
+             for (ClusterNode n : g.cluster().nodes()) {
+                 if (n.metrics().getTotalExecutedJobs() != execJobsCnt)
+                     return false;
+             }
+         }
+ 
+         for (int i = 0; i < clientCnt; i++) {
+             Ignite g = G.ignite("client-" + i);
+ 
+             for (ClusterNode n : g.cluster().nodes()) {
+                 if (n.metrics().getTotalExecutedJobs() != execJobsCnt)
+                     return false;
+             }
+         }
+ 
+         return true;
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     public void testDataExchangeFromServer() throws Exception {
+         testDataExchange("server-0");
+     }
+ 
+     /**
+      * TODO: IGNITE-587.
+      *
+      * @throws Exception If failed.
+      */
+     public void testDataExchangeFromClient() throws Exception {
+         testDataExchange("client-0");
+     }
+ 
+     /**
+      * @throws Exception If failed.
+      */
+     private void testDataExchange(String masterName) throws Exception {
+         startServerNodes(2);
+         startClientNodes(2);
+ 
+         checkNodes(2, 2);
+ 
+         IgniteMessaging msg = grid(masterName).message();
+ 
+         UUID id = null;
+ 
+         try {
+             id = msg.remoteListen(null, new MessageListener());
+ 
 -            msgLatch = new CountDownLatch(4);
++            msgLatch = new CountDownLatch(2);
+ 
+             msg.send(null, "Message 1");
+ 
+             await(msgLatch);
+ 
+             startServerNodes(1);
+             startClientNodes(1);
+ 
+             checkNodes(3, 3);
+ 
 -            msgLatch = new CountDownLatch(6);
++            msgLatch = new CountDownLatch(3);
+ 
+             msg.send(null, "Message 2");
+ 
+             await(msgLatch);
+         }
+         finally {
+             if (id != null)
+                 msg.stopRemoteListen(id);
+         }
+     }
+ 
+     /**
+      * @throws Exception If any error occurs.
+      */
+     public void testDuplicateId() throws Exception {
+         startServerNodes(2);
+ 
+         nodeId = G.ignite("server-1").cluster().localNode().id();
+ 
+         try {
+             startGrid("client-0");
+ 
+             assert false;
+         }
+         catch (IgniteCheckedException e) {
+             IgniteSpiException spiEx = e.getCause(IgniteSpiException.class);
+ 
+             assert spiEx != null : e;
+             assert spiEx.getMessage().contains("same ID") : spiEx.getMessage();
+         }
+     }
+ 
+     /**
+      * @throws Exception If any error occurs.
+      */
+     public void testTimeoutWaitingNodeAddedMessage() throws Exception {
+         startServerNodes(2);
+ 
+         final CountDownLatch cnt = new CountDownLatch(1);
+ 
+         ((TcpDiscoverySpi)G.ignite("server-1").configuration().getDiscoverySpi()).addSendMessageListener(
+             new IgniteInClosure<TcpDiscoveryAbstractMessage>() {
+                 @Override public void apply(TcpDiscoveryAbstractMessage msg) {
+                     try {
+                         cnt.await(10, MINUTES);
+                     }
+                     catch (InterruptedException e) {
+                         Thread.currentThread().interrupt();
+ 
+                         throw new IgniteInterruptedException(e);
+                     }
+                 }
+             });
+ 
+         try {
+             startGrid("client-0");
+ 
+             assert false;
+         }
+         catch (IgniteCheckedException e) {
+             cnt.countDown();
+ 
+             IgniteSpiException spiEx = e.getCause(IgniteSpiException.class);
+ 
+             assert spiEx != null : e;
+             assert spiEx.getMessage().contains("Join process timed out") : spiEx.getMessage();
+         }
+     }
+ 
+     /**
+      * @throws Exception If any error occurs.
+      */
+     public void testGridStartTime() throws Exception {
+         startServerNodes(2);
+ 
+         startClientNodes(2);
+ 
+         long startTime = -1;
+ 
+         for (Ignite g : G.allGrids()) {
+             IgniteEx kernal = (IgniteKernal)g;
+ 
+             assertTrue(kernal.context().discovery().gridStartTime() > 0);
+ 
+             if (startTime == -1)
+                 startTime = kernal.context().discovery().gridStartTime();
+             else
+                 assertEquals(startTime, kernal.context().discovery().gridStartTime());
+         }
+     }
+ 
+     /**
+      * @param clientIdx Index.
+      * @throws Exception In case of error.
+      */
+     private void setClientRouter(int clientIdx, int srvIdx) throws Exception {
+         TcpClientDiscoverySpi disco =
+             (TcpClientDiscoverySpi)G.ignite("client-" + clientIdx).configuration().getDiscoverySpi();
+ 
+         TcpDiscoveryVmIpFinder ipFinder = (TcpDiscoveryVmIpFinder)disco.getIpFinder();
+ 
+         String addr = new ArrayList<>(IP_FINDER.getRegisteredAddresses()).get(srvIdx).toString();
+ 
+         if (addr.startsWith("/"))
+             addr = addr.substring(1);
+ 
+         ipFinder.setAddresses(Arrays.asList(addr));
+     }
+ 
+     /**
+      * @param cnt Number of nodes.
+      * @throws Exception In case of error.
+      */
+     private void startServerNodes(int cnt) throws Exception {
+         for (int i = 0; i < cnt; i++) {
+             Ignite g = startGrid("server-" + srvIdx.getAndIncrement());
+ 
+             srvNodeIds.add(g.cluster().localNode().id());
+         }
+     }
+ 
+     /**
+      * @param cnt Number of nodes.
+      * @throws Exception In case of error.
+      */
+     private void startClientNodes(int cnt) throws Exception {
+         for (int i = 0; i < cnt; i++) {
+             Ignite g = startGrid("client-" + clientIdx.getAndIncrement());
+ 
+             clientNodeIds.add(g.cluster().localNode().id());
+         }
+     }
+ 
+     /**
+      * @param idx Index.
+      */
+     private void failServer(int idx) {
+         ((TcpDiscoverySpi)G.ignite("server-" + idx).configuration().getDiscoverySpi()).simulateNodeFailure();
+     }
+ 
+     /**
+      * @param idx Index.
+      */
+     private void failClient(int idx) {
+         ((TcpClientDiscoverySpi)G.ignite("client-" + idx).configuration().getDiscoverySpi()).simulateNodeFailure();
+     }
+ 
+     /**
+      * @param srvCnt Number of server nodes.
+      * @param clientCnt Number of client nodes.
+      */
+     private void attachListeners(int srvCnt, int clientCnt) throws Exception {
+         if (srvJoinedLatch != null) {
+             for (int i = 0; i < srvCnt; i++) {
+                 G.ignite("server-" + i).events().localListen(new IgnitePredicate<Event>() {
+                     @Override public boolean apply(Event evt) {
+                         info("Joined event fired on server: " + evt);
+ 
+                         srvJoinedLatch.countDown();
+ 
+                         return true;
+                     }
+                 }, EVT_NODE_JOINED);
+             }
+         }
+ 
+         if (srvLeftLatch != null) {
+             for (int i = 0; i < srvCnt; i++) {
+                 G.ignite("server-" + i).events().localListen(new IgnitePredicate<Event>() {
+                     @Override public boolean apply(Event evt) {
+                         info("Left event fired on server: " + evt);
+ 
+                         srvLeftLatch.countDown();
+ 
+                         return true;
+                     }
+                 }, EVT_NODE_LEFT);
+             }
+         }
+ 
+         if (srvFailedLatch != null) {
+             for (int i = 0; i < srvCnt; i++) {
+                 G.ignite("server-" + i).events().localListen(new IgnitePredicate<Event>() {
+                     @Override public boolean apply(Event evt) {
+                         info("Failed event fired on server: " + evt);
+ 
+                         srvFailedLatch.countDown();
+ 
+                         return true;
+                     }
+                 }, EVT_NODE_FAILED);
+             }
+         }
+ 
+         if (clientJoinedLatch != null) {
+             for (int i = 0; i < clientCnt; i++) {
+                 G.ignite("client-" + i).events().localListen(new IgnitePredicate<Event>() {
+                     @Override public boolean apply(Event evt) {
+                         info("Joined event fired on client: " + evt);
+ 
+                         clientJoinedLatch.countDown();
+ 
+                         return true;
+                     }
+                 }, EVT_NODE_JOINED);
+             }
+         }
+ 
+         if (clientLeftLatch != null) {
+             for (int i = 0; i < clientCnt; i++) {
+                 G.ignite("client-" + i).events().localListen(new IgnitePredicate<Event>() {
+                     @Override public boolean apply(Event evt) {
+                         info("Left event fired on client: " + evt);
+ 
+                         clientLeftLatch.countDown();
+ 
+                         return true;
+                     }
+                 }, EVT_NODE_LEFT);
+             }
+         }
+ 
+         if (clientFailedLatch != null) {
+             for (int i = 0; i < clientCnt; i++) {
+                 G.ignite("client-" + i).events().localListen(new IgnitePredicate<Event>() {
+                     @Override public boolean apply(Event evt) {
+                         info("Failed event fired on client: " + evt);
+ 
+                         clientFailedLatch.countDown();
+ 
+                         return true;
+                     }
+                 }, EVT_NODE_FAILED);
+             }
+         }
+     }
+ 
+     /**
+      * @param srvCnt Number of server nodes.
+      * @param clientCnt Number of client nodes.
+      */
+     private void checkNodes(int srvCnt, int clientCnt) {
+         for (int i = 0; i < srvCnt; i++) {
+             Ignite g = G.ignite("server-" + i);
+ 
+             assertTrue(srvNodeIds.contains(g.cluster().localNode().id()));
+ 
+             assertFalse(g.cluster().localNode().isClient());
+ 
+             checkRemoteNodes(g, srvCnt + clientCnt - 1);
+         }
+ 
+         for (int i = 0; i < clientCnt; i++) {
+             Ignite g = G.ignite("client-" + i);
+ 
+             assertTrue(clientNodeIds.contains(g.cluster().localNode().id()));
+ 
+             assertTrue(g.cluster().localNode().isClient());
+ 
+             checkRemoteNodes(g, srvCnt + clientCnt - 1);
+         }
+     }
+ 
+     /**
+      * @param ignite Grid.
+      * @param expCnt Expected nodes count.
+      */
+     @SuppressWarnings("TypeMayBeWeakened")
+     private void checkRemoteNodes(Ignite ignite, int expCnt) {
+         Collection<ClusterNode> nodes = ignite.cluster().forRemotes().nodes();
+ 
+         assertEquals(expCnt, nodes.size());
+ 
+         for (ClusterNode node : nodes) {
+             UUID id = node.id();
+ 
+             if (clientNodeIds.contains(id))
+                 assertTrue(node.isClient());
+             else if (srvNodeIds.contains(id))
+                 assertFalse(node.isClient());
+             else
+                 assert false : "Unexpected node ID: " + id;
+         }
+     }
+ 
+     /**
+      * @param latch Latch.
+      * @throws InterruptedException If interrupted.
+      */
+     private void await(CountDownLatch latch) throws InterruptedException {
+         assertTrue("Latch count: " + latch.getCount(), latch.await(10000, MILLISECONDS));
+     }
+ 
+     /**
+      */
+     private static class MessageListener implements IgniteBiPredicate<UUID, Object> {
+         @IgniteInstanceResource
+         private Ignite ignite;
+ 
+         /** {@inheritDoc} */
+         @Override public boolean apply(UUID uuid, Object msg) {
+             X.println(">>> Received [locNodeId=" + ignite.configuration().getNodeId() + ", msg=" + msg + ']');
+ 
+             msgLatch.countDown();
+ 
+             return true;
+         }
+     }
+ 
+     /**
+      *
+      */
+     private static class TestTcpClientDiscovery extends TcpClientDiscoverySpi {
+         /** */
+         private final Object mux = new Object();
+ 
+         /** */
+         private final AtomicBoolean writeLock = new AtomicBoolean();
+ 
+         /** */
+         private final AtomicBoolean openSockLock = new AtomicBoolean();
+ 
+         /**
+          * @param lock Lock.
+          */
+         private void waitFor(AtomicBoolean lock) {
+             try {
+                 synchronized (mux) {
+                     while (lock.get())
+                         mux.wait();
+                 }
+             }
+             catch (InterruptedException e) {
+                 Thread.currentThread().interrupt();
+ 
+                 throw new RuntimeException(e);
+             }
+         }
+ 
+         /**
+          * @param isPause Is lock.
+          * @param locks Locks.
+          */
+         private void pauseResumeOperation(boolean isPause, AtomicBoolean... locks) {
+             synchronized (mux) {
+                 for (AtomicBoolean lock : locks)
+                     lock.set(isPause);
+ 
+                 mux.notifyAll();
+             }
+         }
+ 
+         /** {@inheritDoc} */
+         @Override protected void writeToSocket(Socket sock, TcpDiscoveryAbstractMessage msg,
+             GridByteArrayOutputStream bout) throws IOException, IgniteCheckedException {
+             waitFor(writeLock);
+ 
+             super.writeToSocket(sock, msg, bout);
+         }
+ 
+         /** {@inheritDoc} */
+         @Override protected Socket openSocket(InetSocketAddress sockAddr) throws IOException {
+             waitFor(openSockLock);
+ 
+             return super.openSocket(sockAddr);
+         }
+ 
+         /**
+          *
+          */
+         public void pauseSocketWrite() {
+             pauseResumeOperation(true, writeLock);
+         }
+ 
+         /**
+          *
+          */
+         public void pauseAll() {
+             pauseResumeOperation(true, openSockLock, writeLock);
+ 
+             brokeConnection();
+         }
+ 
+         /**
+          *
+          */
+         public void resumeAll() {
+             pauseResumeOperation(false, openSockLock, writeLock);
+         }
+     }
+ }


[20/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0bfd42b4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0bfd42b4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0bfd42b4

Branch: refs/heads/ignite-709_3
Commit: 0bfd42b445525a2e3adc88f3d9b2d96faae14202
Parents: cff3c66 bf80c27
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 6 16:23:14 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 6 16:23:14 2015 +0300

----------------------------------------------------------------------
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  22 +-
 ...ientModesTcpClientDiscoveryAbstractTest.java |  10 +-
 .../spi/discovery/tcp/TcpDiscoverySelfTest.java |  65 ++--
 .../ignite/testsuites/IgniteCacheTestSuite.java | 299 -------------------
 .../testsuites/IgniteCacheTestSuite2.java       | 141 +++++++++
 .../testsuites/IgniteCacheTestSuite3.java       | 143 +++++++++
 .../testsuites/IgniteCacheTestSuite4.java       | 131 ++++++++
 7 files changed, 458 insertions(+), 353 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0bfd42b4/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------


[14/47] incubator-ignite git commit: # IGNITE-831 Fix NPE

Posted by sb...@apache.org.
# IGNITE-831 Fix NPE


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d0dac7de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d0dac7de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d0dac7de

Branch: refs/heads/ignite-709_3
Commit: d0dac7de1e573ae3870e20adfe18abf61caa84ec
Parents: 5ffaa4c
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 6 14:30:53 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 6 14:43:16 2015 +0300

----------------------------------------------------------------------
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 28 +++++++++++---------
 1 file changed, 15 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d0dac7de/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 6028901..8051172 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -1766,7 +1766,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                 log.debug("Discovery notification [node=" + node + ", spiState=" + spiState +
                     ", type=" + U.gridEventName(type) + ", topVer=" + topVer + ']');
 
-            Collection<ClusterNode> top = F.<TcpDiscoveryNode, ClusterNode>upcast(ring.visibleNodes());
+            Collection<ClusterNode> top = F.upcast(ring.visibleNodes());
 
             Map<Long, Collection<ClusterNode>> hist = updateTopologyHistory(topVer, top);
 
@@ -4522,20 +4522,22 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
 
                 TcpDiscoveryNode node = ring.node(msg.creatorNodeId());
 
-                try {
-                    Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
+                if (node != null) {
+                    try {
+                        Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
-                    lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
-                        msg.topologyVersion(),
-                        node,
-                        snapshot,
-                        hist,
-                        msgObj);
+                        lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
+                            msg.topologyVersion(),
+                            node,
+                            snapshot,
+                            hist,
+                            msgObj);
 
-                    msg.messageBytes(marsh.marshal(msgObj));
-                }
-                catch (IgniteCheckedException e) {
-                    U.error(log, "Failed to unmarshal discovery custom message.", e);
+                        msg.messageBytes(marsh.marshal(msgObj));
+                    }
+                    catch (IgniteCheckedException e) {
+                        U.error(log, "Failed to unmarshal discovery custom message.", e);
+                    }
                 }
             }
         }


[02/47] incubator-ignite git commit: # IGNITE-831 Allow to listen specified type of TcpDiscoveryCustomEventMessage. (cherry picked from commit 55904c1) (cherry picked from commit 5f7565a)

Posted by sb...@apache.org.
# IGNITE-831 Allow to listen specified type of TcpDiscoveryCustomEventMessage.
(cherry picked from commit 55904c1)
(cherry picked from commit 5f7565a)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/94fb3c56
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/94fb3c56
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/94fb3c56

Branch: refs/heads/ignite-709_3
Commit: 94fb3c5658973a642281e48ffdfa78731373c604
Parents: 1a4de26
Author: sevdokimov <se...@jetbrains.com>
Authored: Wed Apr 29 12:18:43 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Mon May 4 12:08:02 2015 +0300

----------------------------------------------------------------------
 .../managers/discovery/CustomEventListener.java | 32 +++++++++++++++++
 .../discovery/GridDiscoveryManager.java         | 37 ++++++++++++++------
 .../processors/cache/GridCacheProcessor.java    |  9 ++---
 3 files changed, 64 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/94fb3c56/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
new file mode 100644
index 0000000..5c11968
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
@@ -0,0 +1,32 @@
+/*
+ * 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.cluster.*;
+
+/**
+ *
+ * @param <T>
+ */
+public interface CustomEventListener<T extends DiscoveryCustomMessage> {
+    /**
+     * @param snd Send.
+     * @param msg Message.
+     */
+    public void onCustomEvent(ClusterNode snd, T msg);
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/94fb3c56/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 0df7d5f..3d35bee 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
@@ -168,7 +168,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     private final MetricsUpdater metricsUpdater = new MetricsUpdater();
 
     /** Custom event listener. */
-    private GridPlainInClosure<Serializable> customEvtLsnr;
+    private ConcurrentMap<Class<?>, List<CustomEventListener<DiscoveryCustomMessage>>> customEvtLsnrs
+        = new ConcurrentHashMap8<>();
 
     /** Map of dynamic cache filters. */
     private Map<String, CachePredicate> registeredCaches = new HashMap<>();
@@ -379,12 +380,21 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 }
 
                 if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
-                    try {
-                        if (customEvtLsnr != null)
-                            customEvtLsnr.apply(data);
-                    }
-                    catch (Exception e) {
-                        U.error(log, "Failed to notify direct custom event listener: " + data, e);
+                    if (data != null) {
+                        for (Class cls = data.getClass(); cls != null; cls = cls.getSuperclass()) {
+                            List<CustomEventListener<DiscoveryCustomMessage>> list = customEvtLsnrs.get(cls);
+
+                            if (list != null) {
+                                for (CustomEventListener<DiscoveryCustomMessage> lsnr : list) {
+                                    try {
+                                        lsnr.onCustomEvent(node, (DiscoveryCustomMessage)data);
+                                    }
+                                    catch (Exception e) {
+                                        U.error(log, "Failed to notify direct custom event listener: " + data, e);
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
 
@@ -492,10 +502,17 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     }
 
     /**
-     * @param customEvtLsnr Custom event listener.
+     * @param lsnr Custom event listener.
      */
-    public void setCustomEventListener(GridPlainInClosure<Serializable> customEvtLsnr) {
-        this.customEvtLsnr = customEvtLsnr;
+    public <T extends DiscoveryCustomMessage> void setCustomEventListener(Class<T> msgCls, CustomEventListener<T> lsnr) {
+        List<CustomEventListener<DiscoveryCustomMessage>> list = customEvtLsnrs.get(msgCls);
+
+        if (list == null) {
+            list = F.addIfAbsent(customEvtLsnrs, msgCls,
+                new CopyOnWriteArrayList<CustomEventListener<DiscoveryCustomMessage>>());
+        }
+
+        list.add((CustomEventListener<DiscoveryCustomMessage>)lsnr);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/94fb3c56/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 77fa104..c8870a2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -27,6 +27,7 @@ import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
 import org.apache.ignite.events.*;
 import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.processors.*;
 import org.apache.ignite.internal.processors.affinity.*;
 import org.apache.ignite.internal.processors.cache.datastructures.*;
@@ -541,10 +542,10 @@ public class GridCacheProcessor extends GridProcessorAdapter {
 
         maxRebalanceOrder = validatePreloadOrder(ctx.config().getCacheConfiguration());
 
-        ctx.discovery().setCustomEventListener(new GridPlainInClosure<Serializable>() {
-            @Override public void apply(Serializable evt) {
-                if (evt instanceof DynamicCacheChangeBatch)
-                    onCacheChangeRequested((DynamicCacheChangeBatch)evt);
+        ctx.discovery().setCustomEventListener(DynamicCacheChangeBatch.class,
+            new CustomEventListener<DynamicCacheChangeBatch>() {
+            @Override public void onCustomEvent(ClusterNode snd, DynamicCacheChangeBatch msg) {
+                onCacheChangeRequested(msg);
             }
         });
 


[11/47] incubator-ignite git commit: # IGNITE-831 Bug fix: LocalRoutineInfo must be serializable.

Posted by sb...@apache.org.
# IGNITE-831 Bug fix: LocalRoutineInfo must be serializable.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4e1f8b05
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4e1f8b05
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4e1f8b05

Branch: refs/heads/ignite-709_3
Commit: 4e1f8b050857f86a607c3f525480dbba0ffdd98d
Parents: 660648b
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 20:50:46 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 20:50:46 2015 +0300

----------------------------------------------------------------------
 .../internal/processors/continuous/GridContinuousProcessor.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4e1f8b05/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 0769479..96a0b9d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -959,7 +959,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
      * Local routine info.
      */
     @SuppressWarnings("PackageVisibleInnerClass")
-    static class LocalRoutineInfo {
+    static class LocalRoutineInfo implements Serializable {
         /** Projection predicate. */
         private final IgnitePredicate<ClusterNode> prjPred;
 


[37/47] incubator-ignite git commit: IGNITE-709 Rename DiscoveryCustomMessage.forwardMinorVersion() to incrementMinorTopologyVersion()

Posted by sb...@apache.org.
IGNITE-709 Rename DiscoveryCustomMessage.forwardMinorVersion() to incrementMinorTopologyVersion()


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0ba45875
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0ba45875
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0ba45875

Branch: refs/heads/ignite-709_3
Commit: 0ba45875fd49439b2ff487eee6106ae630df840d
Parents: 7ee19cd
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:12:59 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:12:59 2015 +0300

----------------------------------------------------------------------
 .../internal/managers/discovery/DiscoveryCustomMessage.java      | 4 +++-
 .../ignite/internal/managers/discovery/GridDiscoveryManager.java | 2 +-
 .../internal/processors/cache/DynamicCacheChangeBatch.java       | 2 +-
 .../processors/continuous/StartRoutineAckDiscoveryMessage.java   | 2 +-
 .../processors/continuous/StartRoutineDiscoveryMessage.java      | 3 +--
 .../processors/continuous/StopRoutineAckDiscoveryMessage.java    | 2 +-
 .../processors/continuous/StopRoutineDiscoveryMessage.java       | 3 +--
 7 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 e702ee4..13c0b9c 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
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.internal.managers.discovery;
 
+import org.apache.ignite.internal.processors.affinity.*;
 import org.jetbrains.annotations.*;
 
 import java.io.*;
@@ -29,8 +30,9 @@ public interface DiscoveryCustomMessage extends Serializable {
      * Whether or not minor version of topology should be increased on message receive.
      *
      * @return {@code true} if minor topology version should be increased.
+     * @see AffinityTopologyVersion#minorTopVer
      */
-    public boolean forwardMinorVersion();
+    public boolean incrementMinorTopologyVersion();
 
     /**
      * Called when custom message has been handled by all nodes.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 2678b02..5d5275f 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
@@ -359,7 +359,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 if (type == EVT_NODE_METRICS_UPDATED)
                     verChanged = false;
                 else if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
-                    if (customMsg != null && customMsg.forwardMinorVersion()) {
+                    if (customMsg != null && customMsg.incrementMinorTopologyVersion()) {
                         minorTopVer++;
 
                         verChanged = true;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 744f6e8..ca257a9 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
@@ -75,7 +75,7 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public boolean forwardMinorVersion() {
+    @Override public boolean incrementMinorTopologyVersion() {
         return true;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 ca9e4a0..66892b1 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
@@ -46,7 +46,7 @@ public class StartRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public boolean forwardMinorVersion() {
+    @Override public boolean incrementMinorTopologyVersion() {
         return false;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 5669433..2199fd0 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
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.processors.continuous;
 import org.apache.ignite.*;
 import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
-import org.apache.ignite.spi.*;
 
 import java.util.*;
 
@@ -50,7 +49,7 @@ public class StartRoutineDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public boolean forwardMinorVersion() {
+    @Override public boolean incrementMinorTopologyVersion() {
         return false;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 16507a1..a640222 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
@@ -40,7 +40,7 @@ public class StopRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public boolean forwardMinorVersion() {
+    @Override public boolean incrementMinorTopologyVersion() {
         return false;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0ba45875/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 00515f1..e8a43a3 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
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.processors.continuous;
 
 import org.apache.ignite.internal.managers.discovery.*;
-import org.apache.ignite.spi.*;
 import org.jetbrains.annotations.*;
 
 import java.util.*;
@@ -41,7 +40,7 @@ public class StopRoutineDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public boolean forwardMinorVersion() {
+    @Override public boolean incrementMinorTopologyVersion() {
         return false;
     }
 


[38/47] incubator-ignite git commit: IGNITE-709 Remove SettableFuture.

Posted by sb...@apache.org.
IGNITE-709 Remove SettableFuture.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2109bc0f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2109bc0f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2109bc0f

Branch: refs/heads/ignite-709_3
Commit: 2109bc0fb5fe249980cd2e75cce29d723f3a0d85
Parents: 0ba4587
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:33:37 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:33:37 2015 +0300

----------------------------------------------------------------------
 .../internal/util/future/SettableFuture.java    | 94 --------------------
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 21 +++--
 2 files changed, 12 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2109bc0f/modules/core/src/main/java/org/apache/ignite/internal/util/future/SettableFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/SettableFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/SettableFuture.java
deleted file mode 100644
index 7fe094d..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/SettableFuture.java
+++ /dev/null
@@ -1,94 +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.util.future;
-
-import java.util.concurrent.*;
-
-/**
- * Simple implementation of {@link Future}
- */
-public class SettableFuture<T> implements Future<T> {
-    /** */
-    private final CountDownLatch latch = new CountDownLatch(1);
-
-    /** Result of computation. */
-    private T res;
-
-    /** Exception threw during the computation. */
-    private ExecutionException err;
-
-    /** {@inheritDoc} */
-    @Override public boolean cancel(boolean mayInterruptIfRunning) {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isCancelled() {
-        return false;
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isDone() {
-        return latch.getCount() == 0;
-    }
-
-    /** {@inheritDoc} */
-    @Override public T get() throws InterruptedException, ExecutionException {
-        latch.await();
-
-        if (err != null)
-            throw err;
-
-        return res;
-    }
-
-    /** {@inheritDoc} */
-    @Override public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException,
-        TimeoutException {
-
-        if (!latch.await(timeout, unit))
-            throw new TimeoutException();
-
-        if (err != null)
-            throw err;
-
-        return res;
-    }
-
-    /**
-     * Computation is done successful.
-     *
-     * @param res Result of computation.
-     */
-    public void set(T res) {
-        this.res = res;
-
-        latch.countDown();
-    }
-
-    /**
-     * Computation failed.
-     *
-     * @param throwable Error.
-     */
-    public void setException(Throwable throwable) {
-        err = new ExecutionException(throwable);
-
-        latch.countDown();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2109bc0f/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 7ee3e3b..fb64764 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -5327,7 +5327,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
         private volatile ClusterMetrics metrics;
 
         /** */
-        private final AtomicReference<SettableFuture<Boolean>> pingFut = new AtomicReference<>();
+        private final AtomicReference<GridFutureAdapter<Boolean>> pingFut = new AtomicReference<>();
 
         /**
          * @param sock Socket.
@@ -5403,10 +5403,10 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
          *
          */
         public void pingResult(boolean res) {
-            SettableFuture<Boolean> fut = pingFut.getAndSet(null);
+            GridFutureAdapter<Boolean> fut = pingFut.getAndSet(null);
 
             if (fut != null)
-                fut.set(res);
+                fut.onDone(res);
         }
 
         /**
@@ -5416,7 +5416,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
             if (isNodeStopping())
                 return false;
 
-            SettableFuture<Boolean> fut;
+            GridFutureAdapter<Boolean> fut;
 
             while (true) {
                 fut = pingFut.get();
@@ -5424,7 +5424,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                 if (fut != null)
                     break;
 
-                fut = new SettableFuture<>();
+                fut = new GridFutureAdapter<>();
 
                 if (pingFut.compareAndSet(null, fut)) {
                     TcpDiscoveryPingRequest pingReq = new TcpDiscoveryPingRequest(getLocalNodeId(), nodeId);
@@ -5440,15 +5440,18 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
             try {
                 return fut.get(ackTimeout, TimeUnit.MILLISECONDS);
             }
-            catch (ExecutionException e) {
-                throw new IgniteSpiException("Internal error: ping future cannot be done with exception", e);
+            catch (IgniteInterruptedCheckedException ignored) {
+                throw new InterruptedException();
             }
-            catch (TimeoutException ignored) {
+            catch (IgniteFutureTimeoutCheckedException ignored) {
                 if (pingFut.compareAndSet(fut, null))
-                    fut.set(false);
+                    fut.onDone(false);
 
                 return false;
             }
+            catch (IgniteCheckedException e) {
+                throw new IgniteSpiException("Internal error: ping future cannot be done with exception", e);
+            }
         }
 
         /** {@inheritDoc} */


[43/47] incubator-ignite git commit: # IGNITE-709 Add IgniteCacheTcpClientDiscoveryTestSuite to org.apache.ignite.testsuites.IgniteCacheTestSuite

Posted by sb...@apache.org.
# IGNITE-709 Add IgniteCacheTcpClientDiscoveryTestSuite to org.apache.ignite.testsuites.IgniteCacheTestSuite


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e4b530b0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e4b530b0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e4b530b0

Branch: refs/heads/ignite-709_3
Commit: e4b530b0c50bf82e4593860cfda078743ce75783
Parents: fe07023
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 16:28:52 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 16:28:52 2015 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java    | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e4b530b0/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
index 9fd4e88..d63c33f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
@@ -146,6 +146,8 @@ public class IgniteCacheTestSuite extends TestSuite {
         suite.addTestSuite(GridCacheTxPartitionedLocalStoreSelfTest.class);
         suite.addTestSuite(IgniteCacheSystemTransactionsSelfTest.class);
 
+        suite.addTest(IgniteCacheTcpClientDiscoveryTestSuite.suite());
+
         // Heuristic exception handling. TODO IGNITE-257
 //        suite.addTestSuite(GridCacheColocatedTxExceptionSelfTest.class);
 //        suite.addTestSuite(GridCacheReplicatedTxExceptionSelfTest.class);


[15/47] incubator-ignite git commit: # IGNITE-831 Create DiscoverySpiCustomMessage.

Posted by sb...@apache.org.
# IGNITE-831 Create DiscoverySpiCustomMessage.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/5ffaa4cb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/5ffaa4cb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/5ffaa4cb

Branch: refs/heads/ignite-709_3
Commit: 5ffaa4cb6f35ead8fc94c563d52e98cc5241acbc
Parents: 657afd0
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 6 14:27:14 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 6 14:43:16 2015 +0300

----------------------------------------------------------------------
 .../discovery/CustomMessageWrapper.java         | 61 ++++++++++++++++++++
 .../discovery/GridDiscoveryManager.java         | 18 +++---
 .../ignite/spi/discovery/DiscoverySpi.java      |  5 +-
 .../discovery/DiscoverySpiCustomMessage.java    | 39 +++++++++++++
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  3 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 17 +++---
 6 files changed, 121 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ffaa4cb/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
new file mode 100644
index 0000000..f394fe1
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
@@ -0,0 +1,61 @@
+/*
+ * 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.spi.discovery.*;
+import org.jetbrains.annotations.*;
+
+/**
+ *
+ */
+class CustomMessageWrapper implements DiscoverySpiCustomMessage {
+    /** */
+    private final DiscoveryCustomMessage delegate;
+
+    /**
+     * @param delegate Delegate.
+     */
+    CustomMessageWrapper(@NotNull DiscoveryCustomMessage delegate) {
+        this.delegate = delegate;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean forwardMinorVersion() {
+        return delegate.forwardMinorVersion();
+    }
+
+    /** {@inheritDoc} */
+    @Nullable @Override public DiscoverySpiCustomMessage newMessageOnRingEnd() {
+        DiscoveryCustomMessage res = delegate.newMessageOnRingEnd();
+
+        return res == null ? null : new CustomMessageWrapper(res);
+    }
+
+    /**
+     * @return Delegate.
+     */
+    @NotNull
+    public DiscoveryCustomMessage delegate() {
+        return delegate;
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return delegate.toString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ffaa4cb/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 3d35bee..5533fa1 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
@@ -356,7 +356,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 if (type == EVT_NODE_METRICS_UPDATED)
                     verChanged = false;
                 else if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
-                    if (data != null && ((DiscoveryCustomMessage)data).forwardMinorVersion()) {
+                    if (data != null && ((DiscoverySpiCustomMessage)data).forwardMinorVersion()) {
                         minorTopVer++;
 
                         verChanged = true;
@@ -381,16 +381,18 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
 
                 if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
                     if (data != null) {
-                        for (Class cls = data.getClass(); cls != null; cls = cls.getSuperclass()) {
+                        DiscoveryCustomMessage customMsg = ((CustomMessageWrapper)data).delegate();
+
+                        for (Class cls = customMsg.getClass(); cls != null; cls = cls.getSuperclass()) {
                             List<CustomEventListener<DiscoveryCustomMessage>> list = customEvtLsnrs.get(cls);
 
                             if (list != null) {
                                 for (CustomEventListener<DiscoveryCustomMessage> lsnr : list) {
                                     try {
-                                        lsnr.onCustomEvent(node, (DiscoveryCustomMessage)data);
+                                        lsnr.onCustomEvent(node, customMsg);
                                     }
                                     catch (Exception e) {
-                                        U.error(log, "Failed to notify direct custom event listener: " + data, e);
+                                        U.error(log, "Failed to notify direct custom event listener: " + customMsg, e);
                                     }
                                 }
                             }
@@ -1407,10 +1409,10 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     }
 
     /**
-     * @param evt Event.
+     * @param msg Custom message.
      */
-    public void sendCustomEvent(DiscoveryCustomMessage evt) {
-        getSpi().sendCustomEvent(evt);
+    public void sendCustomEvent(DiscoveryCustomMessage msg) {
+        getSpi().sendCustomEvent(new CustomMessageWrapper(msg));
     }
 
     /**
@@ -1634,7 +1636,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
             Collection<ClusterNode> topSnapshot,
             @Nullable Serializable data
         ) {
-            assert node != null;
+            assert node != null : data;
 
             evts.add(F.t(type, topVer, node, topSnapshot, data));
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ffaa4cb/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
index 84a5f41..7836e0f 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
@@ -19,7 +19,6 @@ package org.apache.ignite.spi.discovery;
 
 import org.apache.ignite.*;
 import org.apache.ignite.cluster.*;
-import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.spi.*;
 import org.jetbrains.annotations.*;
@@ -142,10 +141,10 @@ public interface DiscoverySpi extends IgniteSpi {
 
     /**
      * Sends custom message across the ring.
-     * @param evt Event.
+     * @param msg Custom message.
      * @throws IgniteException if failed to marshal evt.
      */
-    public void sendCustomEvent(DiscoveryCustomMessage evt) throws IgniteException;
+    public void sendCustomEvent(DiscoverySpiCustomMessage msg) throws IgniteException;
 
     /**
      * Initiates failure of provided node.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ffaa4cb/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
new file mode 100644
index 0000000..1550613
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
@@ -0,0 +1,39 @@
+/*
+ * 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.jetbrains.annotations.*;
+
+import java.io.*;
+
+/**
+ *
+ */
+public interface DiscoverySpiCustomMessage extends Serializable {
+    /**
+     * Whether or not minor version of topology should be increased on message receive.
+     *
+     * @return {@code true} if minor topology version should be increased.
+     */
+    public boolean forwardMinorVersion();
+
+    /**
+     * Called when message passed the ring.
+     */
+    @Nullable public DiscoverySpiCustomMessage newMessageOnRingEnd();
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ffaa4cb/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index dc89d6a..3e839f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -20,7 +20,6 @@ package org.apache.ignite.spi.discovery.tcp;
 import org.apache.ignite.*;
 import org.apache.ignite.cache.*;
 import org.apache.ignite.cluster.*;
-import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.lang.*;
@@ -389,7 +388,7 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
     }
 
     /** {@inheritDoc} */
-    @Override public void sendCustomEvent(DiscoveryCustomMessage evt) {
+    @Override public void sendCustomEvent(DiscoverySpiCustomMessage evt) {
         if (segmentation)
             throw new IgniteException("Failed to send custom message: client is disconnected");
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5ffaa4cb/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index f8236f1..6028901 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -21,10 +21,9 @@ import org.apache.ignite.*;
 import org.apache.ignite.cache.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
-import org.apache.ignite.events.DiscoveryEvent;
+import org.apache.ignite.events.*;
 import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.events.*;
-import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.processors.security.*;
 import org.apache.ignite.internal.util.*;
 import org.apache.ignite.internal.util.future.*;
@@ -38,11 +37,11 @@ import org.apache.ignite.resources.*;
 import org.apache.ignite.spi.*;
 import org.apache.ignite.spi.discovery.*;
 import org.apache.ignite.spi.discovery.tcp.internal.*;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.jdbc.TcpDiscoveryJdbcIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.jdbc.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.*;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinder;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
 import org.apache.ignite.spi.discovery.tcp.messages.*;
 import org.jetbrains.annotations.*;
 import org.jsr166.*;
@@ -1249,7 +1248,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
     }
 
     /** {@inheritDoc} */
-    @Override public void sendCustomEvent(DiscoveryCustomMessage evt) {
+    @Override public void sendCustomEvent(DiscoverySpiCustomMessage evt) {
         try {
             msgWorker.addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(evt)));
         }
@@ -4479,9 +4478,9 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                     stats.onRingMessageReceived(msg);
 
                     try {
-                        DiscoveryCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
+                        DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
-                        DiscoveryCustomMessage nextMsg = msgObj.newMessageOnRingEnd();
+                        DiscoverySpiCustomMessage nextMsg = msgObj.newMessageOnRingEnd();
 
                         if (nextMsg != null)
                             addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(nextMsg)));


[18/47] incubator-ignite git commit: review

Posted by sb...@apache.org.
review


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/a50abae3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/a50abae3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/a50abae3

Branch: refs/heads/ignite-709_3
Commit: a50abae3bc0902430218abecc9a7e2e6ad63fe6f
Parents: 359680d
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed May 6 15:18:15 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed May 6 15:18:15 2015 +0300

----------------------------------------------------------------------
 .../internal/managers/discovery/CustomMessageWrapper.java     | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a50abae3/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
index 9575cc7..1f02eae 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
@@ -5,9 +5,9 @@
  * 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.
@@ -30,7 +30,7 @@ class CustomMessageWrapper implements DiscoverySpiCustomMessage {
     /**
      * @param delegate Delegate.
      */
-    CustomMessageWrapper(@NotNull DiscoveryCustomMessage delegate) {
+    CustomMessageWrapper(DiscoveryCustomMessage delegate) {
         this.delegate = delegate;
     }
 
@@ -44,7 +44,6 @@ class CustomMessageWrapper implements DiscoverySpiCustomMessage {
     /**
      * @return Delegate.
      */
-    @NotNull
     public DiscoveryCustomMessage delegate() {
         return delegate;
     }


[39/47] incubator-ignite git commit: IGNITE-709 Rename brokeConnection() to brakeConnection().

Posted by sb...@apache.org.
IGNITE-709 Rename brokeConnection() to brakeConnection().


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/4fd4c24d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/4fd4c24d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/4fd4c24d

Branch: refs/heads/ignite-709_3
Commit: 4fd4c24da1412b24d67271ea7307b7a3b66f2875
Parents: 2109bc0
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:34:37 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:34:37 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java   | 2 +-
 .../ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java  | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4fd4c24d/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 316afec..f4e1430 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -665,7 +665,7 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
     /**
      * FOR TEST PURPOSE ONLY!
      */
-    public void brokeConnection() {
+    public void brakeConnection() {
         U.closeQuiet(msgWorker.currSock);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/4fd4c24d/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
index 64e4488..87b63c4 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
@@ -448,7 +448,7 @@ public class TcpClientDiscoverySpiSelfTest extends GridCommonAbstractTest {
 
         attachListeners(2, 3);
 
-        ((TcpClientDiscoverySpi)G.ignite("client-2").configuration().getDiscoverySpi()).brokeConnection();
+        ((TcpClientDiscoverySpi)G.ignite("client-2").configuration().getDiscoverySpi()).brakeConnection();
 
         G.ignite("client-2").message().remoteListen(null, new MessageListener()); // Send some discovery message.
 
@@ -1114,7 +1114,7 @@ public class TcpClientDiscoverySpiSelfTest extends GridCommonAbstractTest {
         public void pauseAll() {
             pauseResumeOperation(true, openSockLock, writeLock);
 
-            brokeConnection();
+            brakeConnection();
         }
 
         /**


[36/47] incubator-ignite git commit: IGNITE-709 Rename newMessageOnRingEnd() to ackMessage()

Posted by sb...@apache.org.
IGNITE-709 Rename newMessageOnRingEnd() to ackMessage()


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/7ee19cd5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7ee19cd5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7ee19cd5

Branch: refs/heads/ignite-709_3
Commit: 7ee19cd531c5b8640c38241283418cfff687d0a0
Parents: 980dd47
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:05:58 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:05:58 2015 +0300

----------------------------------------------------------------------
 .../internal/managers/discovery/CustomMessageWrapper.java       | 2 +-
 .../apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java  | 5 ++++-
 .../org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java    | 2 +-
 3 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7ee19cd5/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
index 00bfb8c..0afb6cf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
@@ -38,7 +38,7 @@ class CustomMessageWrapper implements DiscoverySpiCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public DiscoverySpiCustomMessage newMessageOnRingEnd() {
+    @Nullable @Override public DiscoverySpiCustomMessage ackMessage() {
         DiscoveryCustomMessage res = delegate.ackMessage();
 
         return res == null ? null : new CustomMessageWrapper(res);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7ee19cd5/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
index 8d92deb..72ba9db 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
@@ -22,11 +22,14 @@ import org.jetbrains.annotations.*;
 import java.io.*;
 
 /**
+ * Message to send across ring.
  *
+ * @see org.apache.ignite.internal.managers.discovery.GridDiscoveryManager#sendCustomEvent(
+ * org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage)
  */
 public interface DiscoverySpiCustomMessage extends Serializable {
     /**
      * Called when message passed the ring.
      */
-    @Nullable public DiscoverySpiCustomMessage newMessageOnRingEnd();
+    @Nullable public DiscoverySpiCustomMessage ackMessage();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/7ee19cd5/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index b445b2c..7ee3e3b 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -4574,7 +4574,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                     try {
                         DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
-                        DiscoverySpiCustomMessage nextMsg = msgObj.newMessageOnRingEnd();
+                        DiscoverySpiCustomMessage nextMsg = msgObj.ackMessage();
 
                         if (nextMsg != null)
                             addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(nextMsg)));


[30/47] incubator-ignite git commit: # ignite-836 review

Posted by sb...@apache.org.
# ignite-836 review


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/778aa172
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/778aa172
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/778aa172

Branch: refs/heads/ignite-709_3
Commit: 778aa172fcdf8bbfb66206503e1387630fbb965e
Parents: 5e0bbf2
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Fri May 15 10:13:30 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Fri May 15 10:13:30 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/internal/events/DiscoveryCustomEvent.java | 4 +---
 .../internal/managers/discovery/CustomEventListener.java    | 9 ++++-----
 .../internal/managers/discovery/CustomMessageWrapper.java   | 2 +-
 .../internal/managers/discovery/DiscoveryCustomMessage.java | 6 ++++--
 .../internal/processors/cache/DynamicCacheChangeBatch.java  | 2 +-
 .../continuous/StartRoutineAckDiscoveryMessage.java         | 6 +++---
 .../processors/continuous/StartRoutineDiscoveryMessage.java | 2 +-
 .../continuous/StopRoutineAckDiscoveryMessage.java          | 6 +++---
 .../processors/continuous/StopRoutineDiscoveryMessage.java  | 6 +++---
 9 files changed, 21 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java b/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
index ad33aae..779b54d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
@@ -22,15 +22,13 @@ import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.processors.affinity.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 
-import java.io.*;
-
 /**
  * Custom event.
  */
 public class DiscoveryCustomEvent extends DiscoveryEvent {
     /** */
     private static final long serialVersionUID = 0L;
-    
+
     /**
      * Built-in event type: custom event sent.
      * <br>

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
index 5c11968..2005d4e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomEventListener.java
@@ -5,9 +5,9 @@
  * 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.
@@ -20,12 +20,11 @@ package org.apache.ignite.internal.managers.discovery;
 import org.apache.ignite.cluster.*;
 
 /**
- *
- * @param <T>
+ * Listener interface.
  */
 public interface CustomEventListener<T extends DiscoveryCustomMessage> {
     /**
-     * @param snd Send.
+     * @param snd Sender.
      * @param msg Message.
      */
     public void onCustomEvent(ClusterNode snd, T msg);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
index 3e3d708..00bfb8c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
@@ -39,7 +39,7 @@ class CustomMessageWrapper implements DiscoverySpiCustomMessage {
 
     /** {@inheritDoc} */
     @Nullable @Override public DiscoverySpiCustomMessage newMessageOnRingEnd() {
-        DiscoveryCustomMessage res = delegate.newMessageOnRingEnd();
+        DiscoveryCustomMessage res = delegate.ackMessage();
 
         return res == null ? null : new CustomMessageWrapper(res);
     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/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 49a791e..e702ee4 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
@@ -33,7 +33,9 @@ public interface DiscoveryCustomMessage extends Serializable {
     public boolean forwardMinorVersion();
 
     /**
-     * Called when message passed the ring.
+     * Called when custom message has been handled by all nodes.
+     *
+     * @return Ack message or {@code null} if ack is not required.
      */
-    @Nullable public DiscoveryCustomMessage newMessageOnRingEnd();
+    @Nullable public DiscoveryCustomMessage ackMessage();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/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 330f822..744f6e8 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
@@ -80,7 +80,7 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+    @Nullable @Override public DiscoveryCustomMessage ackMessage() {
         return null;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/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 5ff67d8..ca9e4a0 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
@@ -5,9 +5,9 @@
  * 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.
@@ -51,7 +51,7 @@ public class StartRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+    @Nullable @Override public DiscoveryCustomMessage ackMessage() {
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/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 4be0423..5669433 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
@@ -84,7 +84,7 @@ public class StartRoutineDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+    @Override public DiscoveryCustomMessage ackMessage() {
         return new StartRoutineAckDiscoveryMessage(routineId, errs);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/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 13f7ef4..16507a1 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
@@ -5,9 +5,9 @@
  * 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.
@@ -45,7 +45,7 @@ public class StopRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+    @Nullable @Override public DiscoveryCustomMessage ackMessage() {
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/778aa172/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 4c663a2..00515f1 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
@@ -5,9 +5,9 @@
  * 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.
@@ -53,7 +53,7 @@ public class StopRoutineDiscoveryMessage implements DiscoveryCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+    @Nullable @Override public DiscoveryCustomMessage ackMessage() {
         return new StopRoutineAckDiscoveryMessage(routineId);
     }
 }


[26/47] incubator-ignite git commit: Merge ignite-705_2 to ignite-836_2

Posted by sb...@apache.org.
Merge ignite-705_2 to ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/8bc46ec2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/8bc46ec2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/8bc46ec2

Branch: refs/heads/ignite-709_3
Commit: 8bc46ec23b69766656680fc1675008e8c18e1f34
Parents: 8c105ec 98743ef
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 14 17:57:59 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 14 17:57:59 2015 +0300

----------------------------------------------------------------------
 bin/ignite-schema-import.bat                    |   2 +-
 bin/ignite-schema-import.sh                     |   2 +-
 bin/ignite.bat                                  |   2 +-
 bin/ignite.sh                                   |   2 +-
 bin/ignitevisorcmd.bat                          |   2 +-
 bin/ignitevisorcmd.sh                           |   2 +-
 .../org/apache/ignite/internal/IgnitionEx.java  |   2 +-
 .../processors/cache/GridCacheAdapter.java      | 119 +++++------
 .../processors/cache/GridCacheContext.java      |   7 +
 .../processors/cache/GridCacheMapEntry.java     |  70 +++---
 .../processors/cache/GridCacheUtils.java        |  14 +-
 .../GridDistributedCacheAdapter.java            | 210 +++++++++++-------
 .../distributed/dht/GridDhtCacheAdapter.java    |  16 +-
 .../dht/GridDhtOffHeapCacheEntry.java           |  63 ++++++
 .../dht/GridDhtTransactionalCacheAdapter.java   |   9 +-
 .../distributed/dht/GridNoStorageCacheMap.java  |   4 +-
 .../dht/atomic/GridDhtAtomicCache.java          |   3 +
 .../atomic/GridDhtAtomicOffHeapCacheEntry.java  |  63 ++++++
 .../dht/colocated/GridDhtColocatedCache.java    |   5 +-
 .../GridDhtColocatedOffHeapCacheEntry.java      |  63 ++++++
 .../GridDhtPartitionsExchangeFuture.java        |   9 +-
 .../distributed/near/GridNearCacheAdapter.java  |   3 +
 .../near/GridNearOffHeapCacheEntry.java         |  60 ++++++
 .../cache/local/GridLocalCacheEntry.java        |  18 ++
 .../datastructures/DataStructuresProcessor.java |   4 +-
 .../processors/resource/GridResourceField.java  |   5 +-
 .../processors/resource/GridResourceIoc.java    |  20 +-
 .../resource/GridResourceProcessor.java         |  16 +-
 .../ignite/internal/util/IgniteUtils.java       |   3 +
 .../internal/util/future/SettableFuture.java    |  22 +-
 .../util/lang/GridComputeJobWrapper.java        |  96 ---------
 .../discovery/tcp/TcpClientDiscoverySpi.java    | 180 +++++++++-------
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  11 +-
 .../discovery/tcp/TcpDiscoverySpiAdapter.java   |   5 -
 .../tcp/internal/TcpDiscoveryNodesRing.java     |   2 +-
 .../resources/META-INF/classnames.properties    |   1 -
 .../cache/CacheOffheapMapEntrySelfTest.java     | 168 +++++++++++++++
 .../cache/CacheRemoveAllSelfTest.java           |  81 +++++++
 .../IgniteClientDataStructuresAbstractTest.java | 211 +++++++++++++++++++
 .../IgniteClientDataStructuresTest.java         |  28 +++
 ...IgniteClientDiscoveryDataStructuresTest.java |  28 +++
 .../distributed/GridCacheLockAbstractTest.java  |   2 -
 ...achePartitionedNearDisabledLockSelfTest.java |  47 +++++
 .../near/NoneRebalanceModeSelfTest.java         |  67 ++++++
 .../GridCacheReplicatedLockSelfTest.java        |   5 +
 .../GridCacheLocalIsolatedNodesSelfTest.java    |  18 +-
 .../tcp/TcpClientDiscoverySpiSelfTest.java      |  46 +++-
 .../discovery/tcp/TcpDiscoveryRestartTest.java  | 199 +++++++++++++++++
 .../IgniteCacheDataStructuresSelfTestSuite.java |   3 +
 .../testsuites/IgniteCacheTestSuite2.java       |   2 +
 .../testsuites/IgniteCacheTestSuite4.java       |   4 +
 .../scalar/tests/ScalarCacheQueriesSpec.scala   | 154 +++++++-------
 .../ignite/scalar/tests/ScalarCacheSpec.scala   |  23 +-
 .../scalar/tests/ScalarConversionsSpec.scala    |  43 ++--
 .../scalar/tests/ScalarProjectionSpec.scala     | 128 ++++++-----
 .../scalar/tests/ScalarReturnableSpec.scala     |  41 ++--
 modules/visor-console/pom.xml                   |   2 +-
 .../ignite/visor/VisorRuntimeBaseSpec.scala     |   2 +-
 .../visor/commands/VisorArgListSpec.scala       |  60 +++---
 .../commands/VisorFileNameCompleterSpec.scala   |  34 +--
 .../commands/ack/VisorAckCommandSpec.scala      |  20 +-
 .../commands/alert/VisorAlertCommandSpec.scala  |  68 +++---
 .../cache/VisorCacheClearCommandSpec.scala      |  48 ++---
 .../commands/cache/VisorCacheCommandSpec.scala  |  66 +++---
 .../config/VisorConfigurationCommandSpec.scala  |   8 +-
 .../cswap/VisorCacheSwapCommandSpec.scala       |  24 +--
 .../deploy/VisorDeployCommandSpec.scala         |  10 +-
 .../disco/VisorDiscoveryCommandSpec.scala       |  46 ++--
 .../events/VisorEventsCommandSpec.scala         |  28 +--
 .../visor/commands/gc/VisorGcCommandSpec.scala  |  30 +--
 .../commands/help/VisorHelpCommandSpec.scala    |  57 ++---
 .../commands/kill/VisorKillCommandSpec.scala    |  58 ++---
 .../commands/log/VisorLogCommandSpec.scala      |  10 +-
 .../commands/mem/VisorMemoryCommandSpec.scala   |  77 ++++---
 .../commands/node/VisorNodeCommandSpec.scala    |  22 +-
 .../commands/open/VisorOpenCommandSpec.scala    |  16 +-
 .../commands/ping/VisorPingCommandSpec.scala    |  16 +-
 .../commands/start/VisorStartCommandSpec.scala  | 126 +++++------
 .../commands/tasks/VisorTasksCommandSpec.scala  | 112 +++++-----
 .../commands/top/VisorTopologyCommandSpec.scala |  52 ++---
 .../commands/vvm/VisorVvmCommandSpec.scala      |  30 +--
 81 files changed, 2320 insertions(+), 1115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8bc46ec2/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --cc modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index e8b5a92,9678b87..f32a991
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@@ -1397,9 -1455,9 +1458,9 @@@ public class TcpClientDiscoverySpi exte
  
                      if (node != null && node.visible()) {
                          try {
 -                            Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 +                            DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
  
-                             notifyDiscovery(EVT_DISCOVERY_CUSTOM_EVT, topVer, node, allNodes(), msgObj);
+                             notifyDiscovery(EVT_DISCOVERY_CUSTOM_EVT, topVer, node, allVisibleNodes(), msgObj);
                          }
                          catch (IgniteCheckedException e) {
                              U.error(log, "Failed to unmarshal discovery custom message.", e);
@@@ -1516,8 -1531,8 +1534,8 @@@
           * @param node Node.
           * @param top Topology snapshot.
           */
-         private void notifyDiscovery(int type, long topVer, ClusterNode node, Collection<ClusterNode> top,
+         private void notifyDiscovery(int type, long topVer, ClusterNode node, NavigableSet<ClusterNode> top,
 -            @Nullable Serializable data) {
 +            @Nullable DiscoverySpiCustomMessage data) {
              DiscoverySpiListener lsnr = TcpClientDiscoverySpi.this.lsnr;
  
              if (lsnr != null) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8bc46ec2/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/8bc46ec2/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
----------------------------------------------------------------------


[47/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-709_3

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-709_2' into ignite-709_3

Conflicts:
	modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/fcaf3f51
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/fcaf3f51
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/fcaf3f51

Branch: refs/heads/ignite-709_3
Commit: fcaf3f5116a5c713b4bc07d1f8376566e7dc4eb0
Parents: 994cb14 2d90db7
Author: sboikov <sb...@gridgain.com>
Authored: Fri May 15 18:00:31 2015 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Fri May 15 18:00:31 2015 +0300

----------------------------------------------------------------------
 .../internal/events/DiscoveryCustomEvent.java   |  18 +-
 .../managers/discovery/CustomEventListener.java |  31 +
 .../discovery/CustomMessageWrapper.java         |  58 ++
 .../discovery/DiscoveryCustomMessage.java       |  43 +
 .../discovery/GridDiscoveryManager.java         |  99 ++-
 .../cache/DynamicCacheChangeBatch.java          |  15 +-
 .../GridCachePartitionExchangeManager.java      |   4 +-
 .../processors/cache/GridCacheProcessor.java    |   9 +-
 .../continuous/GridContinuousMessageType.java   |  12 -
 .../continuous/GridContinuousProcessor.java     | 796 ++++---------------
 .../processors/continuous/StartRequestData.java | 267 +++++++
 .../StartRoutineAckDiscoveryMessage.java        |  71 ++
 .../StartRoutineDiscoveryMessage.java           |  94 +++
 .../StopRoutineAckDiscoveryMessage.java         |  58 ++
 .../continuous/StopRoutineDiscoveryMessage.java |  58 ++
 .../internal/util/future/SettableFuture.java    |  94 ---
 .../ignite/spi/discovery/DiscoverySpi.java      |   7 +-
 .../discovery/DiscoverySpiCustomMessage.java    |  35 +
 .../spi/discovery/DiscoverySpiListener.java     |   5 +-
 .../discovery/tcp/TcpClientDiscoverySpi.java    | 106 ++-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 113 ++-
 .../TcpDiscoveryCustomEventMessage.java         |   9 +-
 ...acheTcpClientDiscoveryMultiThreadedTest.java |   9 +-
 ...ridCacheContinuousQueryAbstractSelfTest.java |   6 +-
 .../continuous/GridEventConsumeSelfTest.java    |  36 +-
 ...GridMessagingNoPeerClassLoadingSelfTest.java |   7 +-
 .../ignite/messaging/GridMessagingSelfTest.java |  13 +-
 .../discovery/AbstractDiscoverySelfTest.java    |   8 +-
 .../tcp/TcpClientDiscoverySpiSelfTest.java      |  10 +-
 .../ignite/testsuites/IgniteCacheTestSuite.java |   2 +
 30 files changed, 1156 insertions(+), 937 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fcaf3f51/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fcaf3f51/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fcaf3f51/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite.java
----------------------------------------------------------------------


[03/47] incubator-ignite git commit: # IGNITE-831 Make StartRequestData separated class.

Posted by sb...@apache.org.
# IGNITE-831 Make StartRequestData separated class.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/94fed657
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/94fed657
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/94fed657

Branch: refs/heads/ignite-709_3
Commit: 94fed6571fefeeb58cc89282be84ea8292c36389
Parents: 94fb3c5
Author: sevdokimov <se...@jetbrains.com>
Authored: Mon May 4 23:02:14 2015 +0300
Committer: sevdokimov <se...@jetbrains.com>
Committed: Mon May 4 23:02:14 2015 +0300

----------------------------------------------------------------------
 .../continuous/GridContinuousProcessor.java     | 149 +----------
 .../processors/continuous/StartRequestData.java | 267 +++++++++++++++++++
 2 files changed, 278 insertions(+), 138 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/94fed657/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 0d76ad4..41f5940 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -447,14 +447,14 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                     if (dep == null)
                         throw new IgniteDeploymentCheckedException("Failed to deploy projection predicate: " + prjPred);
 
-                    reqData.clsName = clsName;
-                    reqData.depInfo = new GridDeploymentInfoBean(dep);
+                    reqData.className(clsName);
+                    reqData.deploymentInfo(new GridDeploymentInfoBean(dep));
 
                     reqData.p2pMarshal(marsh);
                 }
 
                 // Handle peer deployment for other handler-specific objects.
-                reqData.hnd.p2pMarshal(ctx);
+                reqData.handler().p2pMarshal(ctx);
             }
         }
         catch (IgniteCheckedException e) {
@@ -557,8 +557,8 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
         if (!nodes.isEmpty()) {
             // Do not send projection predicate (nodes already filtered).
-            reqData.prjPred = null;
-            reqData.prjPredBytes = null;
+            reqData.projectionPredicate(null);
+            reqData.projectionPredicateBytes(null);
 
             // Send start requests.
             try {
@@ -789,16 +789,16 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         UUID routineId = req.routineId();
         StartRequestData data = req.data();
 
-        GridContinuousHandler hnd = data.hnd;
+        GridContinuousHandler hnd = data.handler();
 
         IgniteCheckedException err = null;
 
         try {
             if (ctx.config().isPeerClassLoadingEnabled()) {
-                String clsName = data.clsName;
+                String clsName = data.className();
 
                 if (clsName != null) {
-                    GridDeploymentInfo depInfo = data.depInfo;
+                    GridDeploymentInfo depInfo = data.deploymentInfo();
 
                     GridDeployment dep = ctx.deploy().getGlobalDeployment(depInfo.deployMode(), clsName, clsName,
                         depInfo.userVersion(), nodeId, depInfo.classLoaderId(), depInfo.participants(), null);
@@ -822,11 +822,11 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
         if (err == null) {
             try {
-                IgnitePredicate<ClusterNode> prjPred = data.prjPred;
+                IgnitePredicate<ClusterNode> prjPred = data.projectionPredicate();
 
                 if (prjPred == null || prjPred.apply(ctx.discovery().node(ctx.localNodeId()))) {
-                    registered = registerHandler(nodeId, routineId, hnd, data.bufSize, data.interval,
-                        data.autoUnsubscribe, false);
+                    registered = registerHandler(nodeId, routineId, hnd, data.bufferSize(), data.interval(),
+                        data.autoUnsubscribe(), false);
                 }
             }
             catch (IgniteCheckedException e) {
@@ -1430,133 +1430,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     }
 
     /**
-     * Start request data.
-     */
-    private static class StartRequestData implements Externalizable {
-        /** */
-        private static final long serialVersionUID = 0L;
-
-        /** Projection predicate. */
-        private IgnitePredicate<ClusterNode> prjPred;
-
-        /** Serialized projection predicate. */
-        private byte[] prjPredBytes;
-
-        /** Deployment class name. */
-        private String clsName;
-
-        /** Deployment info. */
-        private GridDeploymentInfo depInfo;
-
-        /** Handler. */
-        private GridContinuousHandler hnd;
-
-        /** Buffer size. */
-        private int bufSize;
-
-        /** Time interval. */
-        private long interval;
-
-        /** Automatic unsubscribe flag. */
-        private boolean autoUnsubscribe;
-
-        /**
-         * Required by {@link Externalizable}.
-         */
-        public StartRequestData() {
-            // No-op.
-        }
-
-        /**
-         * @param prjPred Serialized projection predicate.
-         * @param hnd Handler.
-         * @param bufSize Buffer size.
-         * @param interval Time interval.
-         * @param autoUnsubscribe Automatic unsubscribe flag.
-         */
-        StartRequestData(@Nullable IgnitePredicate<ClusterNode> prjPred, GridContinuousHandler hnd,
-            int bufSize, long interval, boolean autoUnsubscribe) {
-            assert hnd != null;
-            assert bufSize > 0;
-            assert interval >= 0;
-
-            this.prjPred = prjPred;
-            this.hnd = hnd;
-            this.bufSize = bufSize;
-            this.interval = interval;
-            this.autoUnsubscribe = autoUnsubscribe;
-        }
-
-        /**
-         * @param marsh Marshaller.
-         * @throws IgniteCheckedException In case of error.
-         */
-        void p2pMarshal(Marshaller marsh) throws IgniteCheckedException {
-            assert marsh != null;
-
-            prjPredBytes = marsh.marshal(prjPred);
-        }
-
-        /**
-         * @param marsh Marshaller.
-         * @param ldr Class loader.
-         * @throws IgniteCheckedException In case of error.
-         */
-        void p2pUnmarshal(Marshaller marsh, @Nullable ClassLoader ldr) throws IgniteCheckedException {
-            assert marsh != null;
-
-            assert prjPred == null;
-            assert prjPredBytes != null;
-
-            prjPred = marsh.unmarshal(prjPredBytes, ldr);
-        }
-
-        /** {@inheritDoc} */
-        @Override public void writeExternal(ObjectOutput out) throws IOException {
-            boolean b = prjPredBytes != null;
-
-            out.writeBoolean(b);
-
-            if (b) {
-                U.writeByteArray(out, prjPredBytes);
-                U.writeString(out, clsName);
-                out.writeObject(depInfo);
-            }
-            else
-                out.writeObject(prjPred);
-
-            out.writeObject(hnd);
-            out.writeInt(bufSize);
-            out.writeLong(interval);
-            out.writeBoolean(autoUnsubscribe);
-        }
-
-        /** {@inheritDoc} */
-        @SuppressWarnings("unchecked")
-        @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-            boolean b = in.readBoolean();
-
-            if (b) {
-                prjPredBytes = U.readByteArray(in);
-                clsName = U.readString(in);
-                depInfo = (GridDeploymentInfo)in.readObject();
-            }
-            else
-                prjPred = (IgnitePredicate<ClusterNode>)in.readObject();
-
-            hnd = (GridContinuousHandler)in.readObject();
-            bufSize = in.readInt();
-            interval = in.readLong();
-            autoUnsubscribe = in.readBoolean();
-        }
-
-        /** {@inheritDoc} */
-        @Override public String toString() {
-            return S.toString(StartRequestData.class, this);
-        }
-    }
-
-    /**
      * Discovery data.
      */
     private static class DiscoveryData implements Externalizable {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/94fed657/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
new file mode 100644
index 0000000..c721d44
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRequestData.java
@@ -0,0 +1,267 @@
+/*
+ * 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.processors.continuous;
+
+import org.apache.ignite.*;
+import org.apache.ignite.cluster.*;
+import org.apache.ignite.internal.managers.deployment.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.lang.*;
+import org.apache.ignite.marshaller.*;
+import org.jetbrains.annotations.*;
+
+import java.io.*;
+
+/**
+ * Start request data.
+ */
+class StartRequestData implements Externalizable {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** Projection predicate. */
+    private IgnitePredicate<ClusterNode> prjPred;
+
+    /** Serialized projection predicate. */
+    private byte[] prjPredBytes;
+
+    /** Deployment class name. */
+    private String clsName;
+
+    /** Deployment info. */
+    private GridDeploymentInfo depInfo;
+
+    /** Handler. */
+    private GridContinuousHandler hnd;
+
+    /** Buffer size. */
+    private int bufSize;
+
+    /** Time interval. */
+    private long interval;
+
+    /** Automatic unsubscribe flag. */
+    private boolean autoUnsubscribe;
+
+    /**
+     * Required by {@link java.io.Externalizable}.
+     */
+    public StartRequestData() {
+        // No-op.
+    }
+
+    /**
+     * @param prjPred Serialized projection predicate.
+     * @param hnd Handler.
+     * @param bufSize Buffer size.
+     * @param interval Time interval.
+     * @param autoUnsubscribe Automatic unsubscribe flag.
+     */
+    StartRequestData(@Nullable IgnitePredicate<ClusterNode> prjPred, GridContinuousHandler hnd,
+        int bufSize, long interval, boolean autoUnsubscribe) {
+        assert hnd != null;
+        assert bufSize > 0;
+        assert interval >= 0;
+
+        this.prjPred = prjPred;
+        this.hnd = hnd;
+        this.bufSize = bufSize;
+        this.interval = interval;
+        this.autoUnsubscribe = autoUnsubscribe;
+    }
+
+    /**
+     * @param marsh Marshaller.
+     * @throws org.apache.ignite.IgniteCheckedException In case of error.
+     */
+    void p2pMarshal(Marshaller marsh) throws IgniteCheckedException {
+        assert marsh != null;
+
+        prjPredBytes = marsh.marshal(prjPred);
+    }
+
+    /**
+     * @param marsh Marshaller.
+     * @param ldr Class loader.
+     * @throws org.apache.ignite.IgniteCheckedException In case of error.
+     */
+    void p2pUnmarshal(Marshaller marsh, @Nullable ClassLoader ldr) throws IgniteCheckedException {
+        assert marsh != null;
+
+        assert prjPred == null;
+        assert prjPredBytes != null;
+
+        prjPred = marsh.unmarshal(prjPredBytes, ldr);
+    }
+
+    /**
+     * @return Projection predicate.
+     */
+    public IgnitePredicate<ClusterNode> projectionPredicate() {
+        return prjPred;
+    }
+
+    /**
+     * @param prjPred New projection predicate.
+     */
+    public void projectionPredicate(IgnitePredicate<ClusterNode> prjPred) {
+        this.prjPred = prjPred;
+    }
+
+    /**
+     * @return Serialized projection predicate.
+     */
+    public byte[] projectionPredicateBytes() {
+        return prjPredBytes;
+    }
+
+    /**
+     * @param prjPredBytes New serialized projection predicate.
+     */
+    public void projectionPredicateBytes(byte[] prjPredBytes) {
+        this.prjPredBytes = prjPredBytes;
+    }
+
+    /**
+     * @return Deployment class name.
+     */
+    public String className() {
+        return clsName;
+    }
+
+    /**
+     * @param clsName New deployment class name.
+     */
+    public void className(String clsName) {
+        this.clsName = clsName;
+    }
+
+    /**
+     * @return Deployment info.
+     */
+    public GridDeploymentInfo deploymentInfo() {
+        return depInfo;
+    }
+
+    /**
+     * @param depInfo New deployment info.
+     */
+    public void deploymentInfo(GridDeploymentInfo depInfo) {
+        this.depInfo = depInfo;
+    }
+
+    /**
+     * @return Handler.
+     */
+    public GridContinuousHandler handler() {
+        return hnd;
+    }
+
+    /**
+     * @param hnd New handler.
+     */
+    public void handler(GridContinuousHandler hnd) {
+        this.hnd = hnd;
+    }
+
+    /**
+     * @return Buffer size.
+     */
+    public int bufferSize() {
+        return bufSize;
+    }
+
+    /**
+     * @param bufSize New buffer size.
+     */
+    public void bufferSize(int bufSize) {
+        this.bufSize = bufSize;
+    }
+
+    /**
+     * @return Time interval.
+     */
+    public long interval() {
+        return interval;
+    }
+
+    /**
+     * @param interval New time interval.
+     */
+    public void interval(long interval) {
+        this.interval = interval;
+    }
+
+    /**
+     * @return Automatic unsubscribe flag.
+     */
+    public boolean autoUnsubscribe() {
+        return autoUnsubscribe;
+    }
+
+    /**
+     * @param autoUnsubscribe New automatic unsubscribe flag.
+     */
+    public void autoUnsubscribe(boolean autoUnsubscribe) {
+        this.autoUnsubscribe = autoUnsubscribe;
+    }
+
+    /** {@inheritDoc} */
+    @Override public void writeExternal(ObjectOutput out) throws IOException {
+        boolean b = prjPredBytes != null;
+
+        out.writeBoolean(b);
+
+        if (b) {
+            U.writeByteArray(out, prjPredBytes);
+            U.writeString(out, clsName);
+            out.writeObject(depInfo);
+        }
+        else
+            out.writeObject(prjPred);
+
+        out.writeObject(hnd);
+        out.writeInt(bufSize);
+        out.writeLong(interval);
+        out.writeBoolean(autoUnsubscribe);
+    }
+
+    /** {@inheritDoc} */
+    @SuppressWarnings("unchecked")
+    @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        boolean b = in.readBoolean();
+
+        if (b) {
+            prjPredBytes = U.readByteArray(in);
+            clsName = U.readString(in);
+            depInfo = (GridDeploymentInfo)in.readObject();
+        }
+        else
+            prjPred = (IgnitePredicate<ClusterNode>)in.readObject();
+
+        hnd = (GridContinuousHandler)in.readObject();
+        bufSize = in.readInt();
+        interval = in.readLong();
+        autoUnsubscribe = in.readBoolean();
+    }
+
+    /** {@inheritDoc} */
+    @Override public String toString() {
+        return S.toString(StartRequestData.class, this);
+    }
+}


[04/47] incubator-ignite git commit: # IGNITE-831 Add RingEndAwareCustomMessage class.

Posted by sb...@apache.org.
# IGNITE-831 Add RingEndAwareCustomMessage class.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/f382ebca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/f382ebca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/f382ebca

Branch: refs/heads/ignite-709_3
Commit: f382ebca278177752e00d31911b851c09d9ba482
Parents: 94fed65
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 14:14:47 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 14:14:47 2015 +0300

----------------------------------------------------------------------
 .../discovery/RingEndAwareCustomMessage.java    | 31 ++++++++++++++++++++
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 17 +++++++++++
 .../TcpDiscoveryCustomEventMessage.java         |  9 +++++-
 3 files changed, 56 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f382ebca/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java
new file mode 100644
index 0000000..41cee8e
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java
@@ -0,0 +1,31 @@
+/*
+ * 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.spi.*;
+import org.jetbrains.annotations.*;
+
+/**
+ *
+ */
+public interface RingEndAwareCustomMessage extends DiscoveryCustomMessage {
+    /**
+     *
+     */
+    @Nullable public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx);
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f382ebca/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index eba0528..5336738 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -4466,6 +4466,21 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                 if (msg.verified()) {
                     stats.onRingMessageReceived(msg);
 
+                    try {
+                        DiscoveryCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
+
+                        if (msgObj instanceof RingEndAwareCustomMessage) {
+                            DiscoveryCustomMessage nextMsg = ((RingEndAwareCustomMessage)msgObj)
+                                .newMessageOnRingEnd(getSpiContext());
+
+                            if (nextMsg != null)
+                                addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(nextMsg)));
+                        }
+                    }
+                    catch (IgniteCheckedException e) {
+                        U.error(log, "Failed to unmarshal discovery custom message.", e);
+                    }
+
                     addMessage(new TcpDiscoveryDiscardMessage(getLocalNodeId(), msg.id()));
 
                     return;
@@ -4502,6 +4517,8 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                             snapshot,
                             hist,
                             msgObj);
+
+                        msg.messageBytes(marsh.marshal(msgObj));
                     }
                     catch (IgniteCheckedException e) {
                         U.error(log, "Failed to unmarshal discovery custom message.", e);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f382ebca/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java
index a7e0fca..372aa18 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryCustomEventMessage.java
@@ -31,7 +31,7 @@ public class TcpDiscoveryCustomEventMessage extends TcpDiscoveryAbstractMessage
     private static final long serialVersionUID = 0L;
 
     /** */
-    private final byte[] msgBytes;
+    private byte[] msgBytes;
 
     /**
      * @param creatorNodeId Creator node id.
@@ -50,6 +50,13 @@ public class TcpDiscoveryCustomEventMessage extends TcpDiscoveryAbstractMessage
         return msgBytes;
     }
 
+    /**
+     * @param msgBytes New message bytes.
+     */
+    public void messageBytes(byte[] msgBytes) {
+        this.msgBytes = msgBytes;
+    }
+
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(TcpDiscoveryCustomEventMessage.class, this, "super", super.toString());


[28/47] incubator-ignite git commit: IGNITE-836 Fix broken tests.

Posted by sb...@apache.org.
IGNITE-836 Fix broken tests.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/5e0bbf23
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/5e0bbf23
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/5e0bbf23

Branch: refs/heads/ignite-709_3
Commit: 5e0bbf2332cf64666e1e0aa65754e682fa442cc9
Parents: fce94eb
Author: sevdokimov <se...@gridgain.com>
Authored: Thu May 14 21:16:53 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Thu May 14 21:16:53 2015 +0300

----------------------------------------------------------------------
 .../spi/discovery/tcp/TcpClientDiscoverySpi.java    | 16 ++++++++++++++++
 .../tcp/TcpClientDiscoverySpiSelfTest.java          |  2 ++
 2 files changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5e0bbf23/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 7abdd4e..9c59bd4 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -670,6 +670,22 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
     }
 
     /**
+     * FOR TEST PURPOSE ONLY!
+     */
+    public void waitForMessagePrecessed() {
+        Object last = msgWorker.queue.peekLast();
+
+        while (last != null && msgWorker.queue.contains(last)) {
+            try {
+                Thread.sleep(10);
+            }
+            catch (InterruptedException ignored) {
+                Thread.currentThread().interrupt();
+            }
+        }
+    }
+
+    /**
      * Heartbeat sender.
      */
     private class HeartbeatSender extends TimerTask {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/5e0bbf23/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
index 475ccb6..64e4488 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpiSelfTest.java
@@ -986,6 +986,8 @@ public class TcpClientDiscoverySpiSelfTest extends GridCommonAbstractTest {
         for (int i = 0; i < clientCnt; i++) {
             Ignite g = G.ignite("client-" + i);
 
+            ((TcpClientDiscoverySpi)g.configuration().getDiscoverySpi()).waitForMessagePrecessed();
+
             assertTrue(clientNodeIds.contains(g.cluster().localNode().id()));
 
             assertTrue(g.cluster().localNode().isClient());


[45/47] incubator-ignite git commit: # IGNITE-709 Fix GridCacheTcpClientDiscoveryMultiThreadedTest

Posted by sb...@apache.org.
# IGNITE-709 Fix GridCacheTcpClientDiscoveryMultiThreadedTest


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2d90db78
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2d90db78
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2d90db78

Branch: refs/heads/ignite-709_3
Commit: 2d90db782ff0464761f9271d862434097ad158a6
Parents: 8fcc700
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 16:43:00 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 16:43:00 2015 +0300

----------------------------------------------------------------------
 .../cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java    | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2d90db78/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
index 0554a10..9250361 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTcpClientDiscoveryMultiThreadedTest.java
@@ -104,14 +104,14 @@ public class GridCacheTcpClientDiscoveryMultiThreadedTest extends GridCacheAbstr
      * @throws Exception If failed.
      */
     public void testCacheConcurrentlyWithMultipleClientNodes() throws Exception {
-        srvNodesCnt = 3;
-        clientNodesCnt = 4;
+        srvNodesCnt = 2;
+        clientNodesCnt = 3;
 
         startServerNodes();
 
         client = true;
 
-        for (int n = 0; n < 3; n++) {
+        for (int n = 0; n < 2; n++) {
             startGridsMultiThreaded(srvNodesCnt, clientNodesCnt);
 
             checkTopology(gridCount());


[33/47] incubator-ignite git commit: IGNITE-836 Fix GridMessagingNoPeerClassLoadingSelfTest.

Posted by sb...@apache.org.
IGNITE-836 Fix  GridMessagingNoPeerClassLoadingSelfTest.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/784c088e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/784c088e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/784c088e

Branch: refs/heads/ignite-709_3
Commit: 784c088ec9a3c4fdfde30637e374018ea883e2b9
Parents: 668746f
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 13:37:34 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 13:37:34 2015 +0300

----------------------------------------------------------------------
 .../GridMessagingNoPeerClassLoadingSelfTest.java       |  7 +++++--
 .../apache/ignite/messaging/GridMessagingSelfTest.java | 13 ++++++++-----
 2 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/784c088e/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingNoPeerClassLoadingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingNoPeerClassLoadingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingNoPeerClassLoadingSelfTest.java
index 610ce64..37d2ec7 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingNoPeerClassLoadingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingNoPeerClassLoadingSelfTest.java
@@ -31,6 +31,9 @@ import java.util.concurrent.atomic.*;
  * peer class loading.
  */
 public class GridMessagingNoPeerClassLoadingSelfTest extends GridMessagingSelfTest {
+    /** */
+    private static CountDownLatch rcvLatch;
+
     /** {@inheritDoc} */
     @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
         IgniteConfiguration cfg = super.getConfiguration(gridName);
@@ -56,9 +59,9 @@ public class GridMessagingNoPeerClassLoadingSelfTest extends GridMessagingSelfTe
 
         final AtomicBoolean error = new AtomicBoolean(false); //to make it modifiable
 
-        final CountDownLatch rcvLatch = new CountDownLatch(1);
+        rcvLatch = new CountDownLatch(1);
 
-        ignite2.message().remoteListen("", new P2<UUID, Object>() {
+        ignite2.message().remoteListen(null, new P2<UUID, Object>() {
             @Override public boolean apply(UUID nodeId, Object msg) {
                 try {
                     log.info("Received new message [msg=" + msg + ", senderNodeId=" + nodeId + ']');

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/784c088e/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
index c033750..b7838be 100644
--- a/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/messaging/GridMessagingSelfTest.java
@@ -45,7 +45,7 @@ import static org.apache.ignite.testframework.GridTestUtils.*;
 /**
  * Various tests for Messaging public API.
  */
-public class GridMessagingSelfTest extends GridCommonAbstractTest {
+public class GridMessagingSelfTest extends GridCommonAbstractTest implements Serializable {
     /** */
     private static final String MSG_1 = "MSG-1";
 
@@ -74,7 +74,10 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest {
     public static final String EXT_RESOURCE_CLS_NAME = "org.apache.ignite.tests.p2p.TestUserResource";
 
     /** Shared IP finder. */
-    private final TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+    private final transient TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+    /** */
+    protected static CountDownLatch rcvLatch;
 
     /**
      * A test message topic.
@@ -609,7 +612,7 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest {
     public void testRemoteListen() throws Exception {
         final Collection<Object> rcvMsgs = new GridConcurrentHashSet<>();
 
-        final CountDownLatch rcvLatch = new CountDownLatch(4);
+        rcvLatch = new CountDownLatch(4);
 
         ignite2.message().remoteListen(null, new P2<UUID, Object>() {
             @Override public boolean apply(UUID nodeId, Object msg) {
@@ -746,7 +749,7 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest {
 
         final AtomicBoolean error = new AtomicBoolean(false); //to make it modifiable
 
-        final CountDownLatch rcvLatch = new CountDownLatch(3);
+        rcvLatch = new CountDownLatch(3);
 
         ignite2.message().remoteListen(S_TOPIC_1, new P2<UUID, Object>() {
             @Override public boolean apply(UUID nodeId, Object msg) {
@@ -795,7 +798,7 @@ public class GridMessagingSelfTest extends GridCommonAbstractTest {
 
         final AtomicBoolean error = new AtomicBoolean(false); //to make it modifiable
 
-        final CountDownLatch rcvLatch = new CountDownLatch(3);
+        rcvLatch = new CountDownLatch(3);
 
         ignite2.message().remoteListen(I_TOPIC_1, new P2<UUID, Object>() {
             @IgniteInstanceResource


[17/47] incubator-ignite git commit: # IGNITE-831 Create DiscoverySpiCustomMessage.

Posted by sb...@apache.org.
# IGNITE-831 Create DiscoverySpiCustomMessage.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/359680db
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/359680db
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/359680db

Branch: refs/heads/ignite-709_3
Commit: 359680dbd918f7459dc8dda7e6084a05a5ee7b42
Parents: d0dac7d
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 6 15:09:40 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 6 15:09:40 2015 +0300

----------------------------------------------------------------------
 .../internal/events/DiscoveryCustomEvent.java   | 14 ++++++------
 .../discovery/CustomMessageWrapper.java         |  5 ----
 .../discovery/GridDiscoveryManager.java         | 24 +++++++++++---------
 .../GridCachePartitionExchangeManager.java      |  4 ++--
 .../discovery/DiscoverySpiCustomMessage.java    |  7 ------
 .../spi/discovery/DiscoverySpiListener.java     |  5 ++--
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  4 ++--
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  2 +-
 .../discovery/AbstractDiscoverySelfTest.java    |  8 ++++---
 9 files changed, 32 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java b/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
index ee32692..ad33aae 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/events/DiscoveryCustomEvent.java
@@ -34,7 +34,7 @@ public class DiscoveryCustomEvent extends DiscoveryEvent {
     /**
      * Built-in event type: custom event sent.
      * <br>
-     * Generated when someone invoke {@link GridDiscoveryManager#sendCustomEvent(Serializable)}.
+     * Generated when someone invoke {@link GridDiscoveryManager#sendCustomEvent(DiscoveryCustomMessage)}.
      * <p>
      *
      * @see DiscoveryCustomEvent
@@ -42,7 +42,7 @@ public class DiscoveryCustomEvent extends DiscoveryEvent {
     public static final int EVT_DISCOVERY_CUSTOM_EVT = 18;
 
     /** */
-    private Serializable data;
+    private DiscoveryCustomMessage customMsg;
 
     /** Affinity topology version. */
     private AffinityTopologyVersion affTopVer;
@@ -57,15 +57,15 @@ public class DiscoveryCustomEvent extends DiscoveryEvent {
     /**
      * @return Data.
      */
-    public Serializable data() {
-        return data;
+    public DiscoveryCustomMessage customMessage() {
+        return customMsg;
     }
 
     /**
-     * @param data New data.
+     * @param customMsg New customMessage.
      */
-    public void data(Serializable data) {
-        this.data = data;
+    public void customMessage(DiscoveryCustomMessage customMsg) {
+        this.customMsg = customMsg;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
index f394fe1..9575cc7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/CustomMessageWrapper.java
@@ -35,11 +35,6 @@ class CustomMessageWrapper implements DiscoverySpiCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public boolean forwardMinorVersion() {
-        return delegate.forwardMinorVersion();
-    }
-
-    /** {@inheritDoc} */
     @Nullable @Override public DiscoverySpiCustomMessage newMessageOnRingEnd() {
         DiscoveryCustomMessage res = delegate.newMessageOnRingEnd();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/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 5533fa1..c5698a8 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
@@ -344,8 +344,11 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 ClusterNode node,
                 Collection<ClusterNode> topSnapshot,
                 Map<Long, Collection<ClusterNode>> snapshots,
-                @Nullable Serializable data
+                @Nullable DiscoverySpiCustomMessage spiCustomMsg
             ) {
+                DiscoveryCustomMessage customMsg = spiCustomMsg == null ? null
+                    : ((CustomMessageWrapper)spiCustomMsg).delegate();
+
                 final ClusterNode locNode = localNode();
 
                 if (snapshots != null)
@@ -356,7 +359,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 if (type == EVT_NODE_METRICS_UPDATED)
                     verChanged = false;
                 else if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
-                    if (data != null && ((DiscoverySpiCustomMessage)data).forwardMinorVersion()) {
+                    if (customMsg != null && customMsg.forwardMinorVersion()) {
                         minorTopVer++;
 
                         verChanged = true;
@@ -380,9 +383,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 }
 
                 if (type == DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT) {
-                    if (data != null) {
-                        DiscoveryCustomMessage customMsg = ((CustomMessageWrapper)data).delegate();
-
+                    if (customMsg != null) {
                         for (Class cls = customMsg.getClass(); cls != null; cls = cls.getSuperclass()) {
                             List<CustomEventListener<DiscoveryCustomMessage>> list = customEvtLsnrs.get(cls);
 
@@ -435,7 +436,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                     return;
                 }
 
-                discoWrk.addEvent(type, nextTopVer, node, topSnapshot, data);
+                discoWrk.addEvent(type, nextTopVer, node, topSnapshot, customMsg);
             }
         });
 
@@ -1567,8 +1568,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
     /** Worker for discovery events. */
     private class DiscoveryWorker extends GridWorker {
         /** Event queue. */
-        private final BlockingQueue<GridTuple5<Integer, AffinityTopologyVersion, ClusterNode, Collection<ClusterNode>, Serializable>> evts =
-            new LinkedBlockingQueue<>();
+        private final BlockingQueue<GridTuple5<Integer, AffinityTopologyVersion, ClusterNode, Collection<ClusterNode>,
+            DiscoveryCustomMessage>> evts = new LinkedBlockingQueue<>();
 
         /** Node segmented event fired flag. */
         private boolean nodeSegFired;
@@ -1634,7 +1635,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
             AffinityTopologyVersion topVer,
             ClusterNode node,
             Collection<ClusterNode> topSnapshot,
-            @Nullable Serializable data
+            @Nullable DiscoveryCustomMessage data
         ) {
             assert node != null : data;
 
@@ -1675,7 +1676,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
         /** @throws InterruptedException If interrupted. */
         @SuppressWarnings("DuplicateCondition")
         private void body0() throws InterruptedException {
-            GridTuple5<Integer, AffinityTopologyVersion, ClusterNode, Collection<ClusterNode>, Serializable> evt = evts.take();
+            GridTuple5<Integer, AffinityTopologyVersion, ClusterNode, Collection<ClusterNode>,
+                DiscoveryCustomMessage> evt = evts.take();
 
             int type = evt.get1();
 
@@ -1793,7 +1795,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                         customEvt.type(type);
                         customEvt.topologySnapshot(topVer.topologyVersion(), null);
                         customEvt.affinityTopologyVersion(topVer);
-                        customEvt.data(evt.get5());
+                        customEvt.customMessage(evt.get5());
 
                         ctx.event().record(customEvt);
                     }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index 5f82ae2..c7aa322 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -150,8 +150,8 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
                 else {
                     DiscoveryCustomEvent customEvt = (DiscoveryCustomEvent)e;
 
-                    if (customEvt.data() instanceof DynamicCacheChangeBatch) {
-                        DynamicCacheChangeBatch batch = (DynamicCacheChangeBatch)customEvt.data();
+                    if (customEvt.customMessage() instanceof DynamicCacheChangeBatch) {
+                        DynamicCacheChangeBatch batch = (DynamicCacheChangeBatch)customEvt.customMessage();
 
                         Collection<DynamicCacheChangeRequest> valid = new ArrayList<>(batch.requests().size());
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
index 1550613..8d92deb 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiCustomMessage.java
@@ -26,13 +26,6 @@ import java.io.*;
  */
 public interface DiscoverySpiCustomMessage extends Serializable {
     /**
-     * Whether or not minor version of topology should be increased on message receive.
-     *
-     * @return {@code true} if minor topology version should be increased.
-     */
-    public boolean forwardMinorVersion();
-
-    /**
      * Called when message passed the ring.
      */
     @Nullable public DiscoverySpiCustomMessage newMessageOnRingEnd();

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiListener.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiListener.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiListener.java
index 7f17fe4..f46869d 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiListener.java
@@ -18,10 +18,9 @@
 package org.apache.ignite.spi.discovery;
 
 import org.apache.ignite.cluster.*;
-import org.apache.ignite.events.DiscoveryEvent;
+import org.apache.ignite.events.*;
 import org.jetbrains.annotations.*;
 
-import java.io.*;
 import java.util.*;
 
 /**
@@ -47,5 +46,5 @@ public interface DiscoverySpiListener {
         ClusterNode node,
         Collection<ClusterNode> topSnapshot,
         @Nullable Map<Long, Collection<ClusterNode>> topHist,
-        @Nullable Serializable data);
+        @Nullable DiscoverySpiCustomMessage data);
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 3e839f8..5ce7437 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -1332,7 +1332,7 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
 
                     if (node != null && node.visible()) {
                         try {
-                            Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
+                            DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
                             notifyDiscovery(EVT_DISCOVERY_CUSTOM_EVT, topVer, node, allNodes(), msgObj);
                         }
@@ -1433,7 +1433,7 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
          * @param top Topology snapshot.
          */
         private void notifyDiscovery(int type, long topVer, ClusterNode node, Collection<ClusterNode> top,
-            @Nullable Serializable data) {
+            @Nullable DiscoverySpiCustomMessage data) {
             DiscoverySpiListener lsnr = TcpClientDiscoverySpi.this.lsnr;
 
             if (lsnr != null) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index 8051172..40dca05 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -4524,7 +4524,7 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
 
                 if (node != null) {
                     try {
-                        Serializable msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
+                        DiscoverySpiCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
                         lsnr.onDiscovery(DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT,
                             msg.topologyVersion(),

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/359680db/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
index 3c61f00..9c6fbb4 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
@@ -25,6 +25,7 @@ import org.apache.ignite.spi.*;
 import org.apache.ignite.testframework.config.*;
 import org.apache.ignite.testframework.junits.*;
 import org.apache.ignite.testframework.junits.spi.*;
+import org.jetbrains.annotations.*;
 
 import javax.management.*;
 import java.io.*;
@@ -132,7 +133,7 @@ public abstract class AbstractDiscoverySelfTest<T extends IgniteSpi> extends Gri
 
         /** {@inheritDoc} */
         @Override public void onDiscovery(int type, long topVer, ClusterNode node, Collection<ClusterNode> topSnapshot,
-            Map<Long, Collection<ClusterNode>> topHist, Serializable data) {
+            Map<Long, Collection<ClusterNode>> topHist, @Nullable DiscoverySpiCustomMessage data) {
             if (type == EVT_NODE_METRICS_UPDATED)
                 isMetricsUpdate = true;
         }
@@ -205,7 +206,7 @@ public abstract class AbstractDiscoverySelfTest<T extends IgniteSpi> extends Gri
             DiscoverySpiListener locHeartbeatLsnr = new DiscoverySpiListener() {
                 @Override public void onDiscovery(int type, long topVer, ClusterNode node,
                     Collection<ClusterNode> topSnapshot, Map<Long, Collection<ClusterNode>> topHist,
-                    Serializable data) {
+                    @Nullable DiscoverySpiCustomMessage data) {
                     // If METRICS_UPDATED came from local node
                     if (type == EVT_NODE_METRICS_UPDATED
                         && node.id().equals(spi.getLocalNode().id()))
@@ -369,7 +370,8 @@ public abstract class AbstractDiscoverySelfTest<T extends IgniteSpi> extends Gri
                 spi.setListener(new DiscoverySpiListener() {
                     @SuppressWarnings({"NakedNotify"})
                     @Override public void onDiscovery(int type, long topVer, ClusterNode node,
-                        Collection<ClusterNode> topSnapshot, Map<Long, Collection<ClusterNode>> topHist, Serializable data) {
+                        Collection<ClusterNode> topSnapshot, Map<Long, Collection<ClusterNode>> topHist,
+                        @Nullable DiscoverySpiCustomMessage data) {
                         info("Discovery event [type=" + type + ", node=" + node + ']');
 
                         synchronized (mux) {


[42/47] incubator-ignite git commit: # IGNITE-709 Remove incorrect test

Posted by sb...@apache.org.
# IGNITE-709 Remove incorrect test


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/fe070234
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/fe070234
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/fe070234

Branch: refs/heads/ignite-709_3
Commit: fe070234d052961f7540a62b94b9d03309607ca3
Parents: 6762cf9
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 16:05:56 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 16:05:56 2015 +0300

----------------------------------------------------------------------
 .../continuous/GridEventConsumeSelfTest.java    | 22 --------------------
 1 file changed, 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fe070234/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
index 9ff99c4..bca784b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/continuous/GridEventConsumeSelfTest.java
@@ -509,28 +509,6 @@ public class GridEventConsumeSelfTest extends GridCommonAbstractTest implements
     /**
      * @throws Exception If failed.
      */
-    public void testEmptyProjection() throws Exception {
-        try {
-            events(grid(0).cluster().forPredicate(F.<ClusterNode>alwaysFalse())).remoteListen(
-                new P2<UUID, Event>() {
-                    @Override public boolean apply(UUID nodeId, Event evt) {
-                        return true;
-                    }
-                },
-                null
-            );
-
-            assert false : "Exception was not thrown.";
-        }
-        catch (IgniteException e) {
-            assertTrue(e.getMessage().startsWith(
-                "Failed to register remote continuous listener (projection is empty)."));
-        }
-    }
-
-    /**
-     * @throws Exception If failed.
-     */
     public void testStopByCallback() throws Exception {
         final Collection<UUID> nodeIds = new HashSet<>();
         final AtomicInteger cnt = new AtomicInteger();


[09/47] incubator-ignite git commit: # IGNITE-831 Support listeners from clients.

Posted by sb...@apache.org.
# IGNITE-831 Support listeners from clients.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/37c60075
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/37c60075
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/37c60075

Branch: refs/heads/ignite-709_3
Commit: 37c60075d234480b9217a6456cbfc94e380c3b3a
Parents: e028de8
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 19:38:29 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 19:38:29 2015 +0300

----------------------------------------------------------------------
 .../continuous/GridContinuousProcessor.java     | 109 ++++++++++++-------
 1 file changed, 67 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/37c60075/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index d71609b..d1923d9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -38,6 +38,7 @@ import org.apache.ignite.internal.util.worker.*;
 import org.apache.ignite.lang.*;
 import org.apache.ignite.marshaller.*;
 import org.apache.ignite.plugin.extensions.communication.*;
+import org.apache.ignite.spi.discovery.tcp.internal.*;
 import org.apache.ignite.thread.*;
 import org.jetbrains.annotations.*;
 import org.jsr166.*;
@@ -59,6 +60,9 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     /** Local infos. */
     private final ConcurrentMap<UUID, LocalRoutineInfo> locInfos = new ConcurrentHashMap8<>();
 
+    /** Local infos. */
+    private final ConcurrentMap<UUID, Map<UUID, LocalRoutineInfo>> clientInfos = new ConcurrentHashMap8<>();
+
     /** Remote infos. */
     private final ConcurrentMap<UUID, RemoteRoutineInfo> rmtInfos = new ConcurrentHashMap8<>();
 
@@ -77,9 +81,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     /** Stopped IDs. */
     private final Collection<UUID> stopped = new HashSet<>();
 
-    /** Lock for pending requests. */
-    private final Lock pendingLock = new ReentrantLock();
-
     /** Lock for stop process. */
     private final Lock stopLock = new ReentrantLock();
 
@@ -113,10 +114,11 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             @SuppressWarnings({"fallthrough", "TooBroadScope"})
             @Override public void onEvent(Event evt) {
                 assert evt instanceof DiscoveryEvent;
+                assert evt.type() == EVT_NODE_LEFT || evt.type() == EVT_NODE_FAILED;
 
                 UUID nodeId = ((DiscoveryEvent)evt).eventNode().id();
 
-                assert evt.type() == EVT_NODE_LEFT || evt.type() == EVT_NODE_FAILED;
+                clientInfos.remove(nodeId);
 
                 // Unregister handlers created by left node.
                 for (Map.Entry<UUID, RemoteRoutineInfo> e : rmtInfos.entrySet()) {
@@ -148,7 +150,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             new CustomEventListener<StartRoutineDiscoveryMessage>() {
                 @Override public void onCustomEvent(ClusterNode snd, StartRoutineDiscoveryMessage msg) {
                     if (!snd.id().equals(ctx.localNodeId()))
-                        processStartRequest(snd.id(), msg);
+                        processStartRequest(snd, msg);
                 }
             });
 
@@ -179,6 +181,13 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                         UUID routineId = msg.routineId();
 
                         unregisterRemote(routineId);
+
+                        if (((TcpDiscoveryNode)snd).clientRouterNodeId() != null) {
+                            Map<UUID, LocalRoutineInfo> infoMap = clientInfos.get(snd.id());
+
+                            if (infoMap != null)
+                                infoMap.remove(msg.routineId());
+                        }
                     }
                 }
             });
@@ -251,26 +260,19 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     /** {@inheritDoc} */
     @Override @Nullable public Serializable collectDiscoveryData(UUID nodeId) {
         if (!nodeId.equals(ctx.localNodeId())) {
-            pendingLock.lock();
-
-            try {
-                DiscoveryData data = new DiscoveryData(ctx.localNodeId());
+            DiscoveryData data = new DiscoveryData(ctx.localNodeId(), clientInfos);
 
-                // Collect listeners information (will be sent to
-                // joining node during discovery process).
-                for (Map.Entry<UUID, LocalRoutineInfo> e : locInfos.entrySet()) {
-                    UUID routineId = e.getKey();
-                    LocalRoutineInfo info = e.getValue();
-
-                    data.addItem(new DiscoveryDataItem(routineId, info.prjPred,
-                        info.hnd, info.bufSize, info.interval));
-                }
+            // Collect listeners information (will be sent to
+            // joining node during discovery process).
+            for (Map.Entry<UUID, LocalRoutineInfo> e : locInfos.entrySet()) {
+                UUID routineId = e.getKey();
+                LocalRoutineInfo info = e.getValue();
 
-                return data;
-            }
-            finally {
-                pendingLock.unlock();
+                data.addItem(new DiscoveryDataItem(routineId, info.prjPred,
+                    info.hnd, info.bufSize, info.interval));
             }
+
+            return data;
         }
         else
             return null;
@@ -294,6 +296,18 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                     }
                 }
             }
+
+            for (Map.Entry<UUID, Map<UUID, LocalRoutineInfo>> entry : data.clientInfos.entrySet()) {
+                Map<UUID, LocalRoutineInfo> map = clientInfos.get(entry.getKey());
+
+                if (map == null) {
+                    map = new HashMap<>();
+
+                    clientInfos.put(entry.getKey(), map);
+                }
+
+                map.putAll(entry.getValue());
+            }
         }
     }
 
@@ -414,15 +428,8 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             });
         }
 
-        pendingLock.lock();
-
-        try {
-            // Register routine locally.
-            locInfos.put(routineId, new LocalRoutineInfo(prjPred, hnd, bufSize, interval));
-        }
-        finally {
-            pendingLock.unlock();
-        }
+        // Register routine locally.
+        locInfos.put(routineId, new LocalRoutineInfo(prjPred, hnd, bufSize, interval));
 
         StartFuture fut = new StartFuture(ctx, routineId);
 
@@ -581,13 +588,10 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     }
 
     /**
-     * @param nodeId Sender ID.
+     * @param node Sender.
      * @param req Start request.
      */
-    private void processStartRequest(UUID nodeId, StartRoutineDiscoveryMessage req) {
-        assert nodeId != null;
-        assert req != null;
-
+    private void processStartRequest(ClusterNode node, StartRoutineDiscoveryMessage req) {
         UUID routineId = req.routineId();
         StartRequestData data = req.startRequestData();
 
@@ -603,7 +607,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                     GridDeploymentInfo depInfo = data.deploymentInfo();
 
                     GridDeployment dep = ctx.deploy().getGlobalDeployment(depInfo.deployMode(), clsName, clsName,
-                        depInfo.userVersion(), nodeId, depInfo.classLoaderId(), depInfo.participants(), null);
+                        depInfo.userVersion(), node.id(), depInfo.classLoaderId(), depInfo.participants(), null);
 
                     if (dep == null)
                         throw new IgniteDeploymentCheckedException("Failed to obtain deployment for class: " + clsName);
@@ -611,13 +615,28 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                     data.p2pUnmarshal(marsh, dep.classLoader());
                 }
 
-                hnd.p2pUnmarshal(nodeId, ctx);
+                hnd.p2pUnmarshal(node.id(), ctx);
             }
         }
         catch (IgniteCheckedException e) {
             err = e;
 
-            U.error(log, "Failed to register handler [nodeId=" + nodeId + ", routineId=" + routineId + ']', e);
+            U.error(log, "Failed to register handler [nodeId=" + node.id() + ", routineId=" + routineId + ']', e);
+        }
+
+        if (((TcpDiscoveryNode)node).clientRouterNodeId() != null) {
+            Map<UUID, LocalRoutineInfo> clientRouteMap = clientInfos.get(node.id());
+
+            if (clientRouteMap == null) {
+                clientRouteMap = new HashMap<>();
+
+                Map<UUID, LocalRoutineInfo> old = clientInfos.put(node.id(), clientRouteMap);
+
+                assert old == null;
+            }
+
+            clientRouteMap.put(routineId, new LocalRoutineInfo(data.projectionPredicate(), hnd, data.bufferSize(),
+                data.interval()));
         }
 
         boolean registered = false;
@@ -627,14 +646,14 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                 IgnitePredicate<ClusterNode> prjPred = data.projectionPredicate();
 
                 if (prjPred == null || prjPred.apply(ctx.discovery().node(ctx.localNodeId()))) {
-                    registered = registerHandler(nodeId, routineId, hnd, data.bufferSize(), data.interval(),
+                    registered = registerHandler(node.id(), routineId, hnd, data.bufferSize(), data.interval(),
                         data.autoUnsubscribe(), false);
                 }
             }
             catch (IgniteCheckedException e) {
                 err = e;
 
-                U.error(log, "Failed to register handler [nodeId=" + nodeId + ", routineId=" + routineId + ']', e);
+                U.error(log, "Failed to register handler [nodeId=" + node.id() + ", routineId=" + routineId + ']', e);
             }
         }
 
@@ -1129,6 +1148,8 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         @GridToStringInclude
         private Collection<DiscoveryDataItem> items;
 
+        private Map<UUID, Map<UUID, LocalRoutineInfo>> clientInfos;
+
         /**
          * Required by {@link Externalizable}.
          */
@@ -1139,11 +1160,13 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         /**
          * @param nodeId Node ID.
          */
-        DiscoveryData(UUID nodeId) {
+        DiscoveryData(UUID nodeId, Map<UUID, Map<UUID, LocalRoutineInfo>> clientInfos) {
             assert nodeId != null;
 
             this.nodeId = nodeId;
 
+            this.clientInfos = clientInfos;
+
             items = new ArrayList<>();
         }
 
@@ -1158,12 +1181,14 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         @Override public void writeExternal(ObjectOutput out) throws IOException {
             U.writeUuid(out, nodeId);
             U.writeCollection(out, items);
+            U.writeMap(out, clientInfos);
         }
 
         /** {@inheritDoc} */
         @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
             nodeId = U.readUuid(in);
             items = U.readCollection(in);
+            clientInfos = U.readMap(in);
         }
 
         /** {@inheritDoc} */


[12/47] incubator-ignite git commit: Merge branches 'ignite-836_2' and 'ignite-sprint-5' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-836_2

Posted by sb...@apache.org.
Merge branches 'ignite-836_2' and 'ignite-sprint-5' of https://git-wip-us.apache.org/repos/asf/incubator-ignite into ignite-836_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/11d0d135
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/11d0d135
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/11d0d135

Branch: refs/heads/ignite-709_3
Commit: 11d0d1359b76f93f8a112cc36424d42dd0932ebe
Parents: 4e1f8b0 6f1d642
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed May 6 12:31:42 2015 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed May 6 12:31:42 2015 +0300

----------------------------------------------------------------------
 dev-tools/build.gradle                     | 15 +++++++--------
 dev-tools/src/main/groovy/jiraslurp.groovy | 15 +++++++--------
 2 files changed, 14 insertions(+), 16 deletions(-)
----------------------------------------------------------------------



[08/47] incubator-ignite git commit: # IGNITE-831 Done.

Posted by sb...@apache.org.
# IGNITE-831 Done.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e028de86
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e028de86
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e028de86

Branch: refs/heads/ignite-709_3
Commit: e028de86ee375ad7c96a8eeac333487258534cff
Parents: ac7597e
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 19:14:43 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 19:14:43 2015 +0300

----------------------------------------------------------------------
 .../continuous/GridContinuousMessageType.java   |  12 -
 .../continuous/GridContinuousProcessor.java     | 544 +++----------------
 .../StartRoutineAckDiscoveryMessage.java        |  62 +++
 .../StartRoutineDiscoveryMessage.java           |  89 +++
 .../StopRoutineAckDiscoveryMessage.java         |  49 ++
 .../continuous/StopRoutineDiscoveryMessage.java |  56 ++
 .../ignite/spi/discovery/DiscoverySpi.java      |   4 +-
 ...ridCacheContinuousQueryAbstractSelfTest.java |   6 +-
 .../tcp/TcpClientDiscoverySelfTest.java         |   4 +-
 9 files changed, 338 insertions(+), 488 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessageType.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessageType.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessageType.java
index eb33613..1b79430 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessageType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousMessageType.java
@@ -23,18 +23,6 @@ import org.jetbrains.annotations.*;
  * Continuous processor message types.
  */
 enum GridContinuousMessageType {
-    /** Consume start request. */
-    MSG_START_REQ,
-
-    /** Consume start acknowledgement. */
-    MSG_START_ACK,
-
-    /** Consume stop request. */
-    MSG_STOP_REQ,
-
-    /** Consume stop acknowledgement. */
-    MSG_STOP_ACK,
-
     /** Remote event notification. */
     MSG_EVT_NOTIFICATION,
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 41f5940..d71609b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -24,6 +24,7 @@ import org.apache.ignite.internal.*;
 import org.apache.ignite.internal.cluster.*;
 import org.apache.ignite.internal.managers.communication.*;
 import org.apache.ignite.internal.managers.deployment.*;
+import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.managers.eventstorage.*;
 import org.apache.ignite.internal.processors.*;
 import org.apache.ignite.internal.processors.cache.*;
@@ -64,21 +65,12 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     /** Start futures. */
     private final ConcurrentMap<UUID, StartFuture> startFuts = new ConcurrentHashMap8<>();
 
-    /** Start ack wait lists. */
-    private final ConcurrentMap<UUID, Collection<UUID>> waitForStartAck = new ConcurrentHashMap8<>();
-
     /** Stop futures. */
     private final ConcurrentMap<UUID, StopFuture> stopFuts = new ConcurrentHashMap8<>();
 
-    /** Stop ack wait lists. */
-    private final ConcurrentMap<UUID, Collection<UUID>> waitForStopAck = new ConcurrentHashMap8<>();
-
     /** Threads started by this processor. */
     private final Collection<IgniteThread> threads = new GridConcurrentHashSet<>();
 
-    /** Pending start requests. */
-    private final Map<UUID, Collection<GridContinuousMessage>> pending = new HashMap<>();
-
     /** */
     private final ConcurrentMap<IgniteUuid, SyncMessageAckFuture> syncMsgFuts = new ConcurrentHashMap8<>();
 
@@ -91,18 +83,15 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     /** Lock for stop process. */
     private final Lock stopLock = new ReentrantLock();
 
+    /** Marshaller. */
+    private Marshaller marsh;
+
     /** Delay in milliseconds between retries. */
     private long retryDelay = 1000;
 
     /** Number of retries using to send messages. */
     private int retryCnt = 3;
 
-    /** Acknowledgement timeout. */
-    private long ackTimeout;
-
-    /** Marshaller. */
-    private Marshaller marsh;
-
     /**
      * @param ctx Kernal context.
      */
@@ -117,15 +106,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
         retryDelay = ctx.config().getNetworkSendRetryDelay();
         retryCnt = ctx.config().getNetworkSendRetryCount();
-        ackTimeout = ctx.config().getNetworkTimeout();
-
-        if (ackTimeout < retryDelay * retryCnt) {
-            U.warn(log, "Acknowledgement timeout for continuous operations is less than message send " +
-                "retry delay multiplied by retries count (will increase timeout value) [ackTimeout=" +
-                ackTimeout + ", retryDelay=" + retryDelay + ", retryCnt=" + retryCnt + ']');
-
-            ackTimeout = retryDelay * retryCnt;
-        }
 
         marsh = ctx.config().getMarshaller();
 
@@ -136,111 +116,82 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
                 UUID nodeId = ((DiscoveryEvent)evt).eventNode().id();
 
-                Collection<GridContinuousMessage> reqs;
+                assert evt.type() == EVT_NODE_LEFT || evt.type() == EVT_NODE_FAILED;
 
-                pendingLock.lock();
+                // Unregister handlers created by left node.
+                for (Map.Entry<UUID, RemoteRoutineInfo> e : rmtInfos.entrySet()) {
+                    UUID routineId = e.getKey();
+                    RemoteRoutineInfo info = e.getValue();
 
-                try {
-                    // Remove pending requests to send to joined node
-                    // (if node is left or failed, they are dropped).
-                    reqs = pending.remove(nodeId);
-                }
-                finally {
-                    pendingLock.unlock();
+                    if (info.autoUnsubscribe && nodeId.equals(info.nodeId))
+                        unregisterRemote(routineId);
                 }
 
-                switch (evt.type()) {
-                    case EVT_NODE_JOINED:
-                        if (reqs != null) {
-                            UUID routineId = null;
+                for (Map.Entry<IgniteUuid, SyncMessageAckFuture> e : syncMsgFuts.entrySet()) {
+                    SyncMessageAckFuture fut = e.getValue();
 
-                            // Send pending requests.
-                            try {
-                                for (GridContinuousMessage req : reqs) {
-                                    routineId = req.routineId();
+                    if (fut.nodeId().equals(nodeId)) {
+                        SyncMessageAckFuture fut0 = syncMsgFuts.remove(e.getKey());
 
-                                    sendWithRetries(nodeId, req, null);
-                                }
-                            }
-                            catch (ClusterTopologyCheckedException ignored) {
-                                if (log.isDebugEnabled())
-                                    log.debug("Failed to send pending start request to node (is node alive?): " +
-                                        nodeId);
-                            }
-                            catch (IgniteCheckedException e) {
-                                U.error(log, "Failed to send pending start request to node: " + nodeId, e);
+                        if (fut0 != null) {
+                            ClusterTopologyCheckedException err = new ClusterTopologyCheckedException(
+                                "Node left grid while sending message to: " + nodeId);
 
-                                completeStartFuture(routineId);
-                            }
-                        }
-
-                        break;
-
-                    case EVT_NODE_LEFT:
-                    case EVT_NODE_FAILED:
-                        // Do not wait for start acknowledgements from left node.
-                        for (Map.Entry<UUID, Collection<UUID>> e : waitForStartAck.entrySet()) {
-                            Collection<UUID> nodeIds = e.getValue();
-
-                            for (Iterator<UUID> it = nodeIds.iterator(); it.hasNext();) {
-                                if (nodeId.equals(it.next())) {
-                                    it.remove();
-
-                                    break;
-                                }
-                            }
-
-                            if (nodeIds.isEmpty())
-                                completeStartFuture(e.getKey());
+                            fut0.onDone(err);
                         }
+                    }
+                }
+            }
+        }, EVT_NODE_LEFT, EVT_NODE_FAILED);
 
-                        // Do not wait for stop acknowledgements from left node.
-                        for (Map.Entry<UUID, Collection<UUID>> e : waitForStopAck.entrySet()) {
-                            Collection<UUID> nodeIds = e.getValue();
+        ctx.discovery().setCustomEventListener(StartRoutineDiscoveryMessage.class,
+            new CustomEventListener<StartRoutineDiscoveryMessage>() {
+                @Override public void onCustomEvent(ClusterNode snd, StartRoutineDiscoveryMessage msg) {
+                    if (!snd.id().equals(ctx.localNodeId()))
+                        processStartRequest(snd.id(), msg);
+                }
+            });
 
-                            for (Iterator<UUID> it = nodeIds.iterator(); it.hasNext();) {
-                                if (nodeId.equals(it.next())) {
-                                    it.remove();
+        ctx.discovery().setCustomEventListener(StartRoutineAckDiscoveryMessage.class,
+            new CustomEventListener<StartRoutineAckDiscoveryMessage>() {
+                @Override public void onCustomEvent(ClusterNode snd, StartRoutineAckDiscoveryMessage msg) {
+                    StartFuture fut = startFuts.remove(msg.routineId());
 
-                                    break;
-                                }
-                            }
+                    if (fut != null) {
+                        if (msg.errs().isEmpty())
+                            fut.onRemoteRegistered();
+                        else {
+                            IgniteCheckedException firstEx = F.first(msg.errs().values());
 
-                            if (nodeIds.isEmpty())
-                                completeStopFuture(e.getKey());
-                        }
-
-                        // Unregister handlers created by left node.
-                        for (Map.Entry<UUID, RemoteRoutineInfo> e : rmtInfos.entrySet()) {
-                            UUID routineId = e.getKey();
-                            RemoteRoutineInfo info = e.getValue();
+                            fut.onDone(firstEx);
 
-                            if (info.autoUnsubscribe && nodeId.equals(info.nodeId))
-                                unregisterRemote(routineId);
+                            stopRoutine(msg.routineId());
                         }
 
-                        for (Map.Entry<IgniteUuid, SyncMessageAckFuture> e : syncMsgFuts.entrySet()) {
-                            SyncMessageAckFuture fut = e.getValue();
-
-                            if (fut.nodeId().equals(nodeId)) {
-                                SyncMessageAckFuture fut0 = syncMsgFuts.remove(e.getKey());
+                    }
+                }
+            });
 
-                                if (fut0 != null) {
-                                    ClusterTopologyCheckedException err = new ClusterTopologyCheckedException(
-                                        "Node left grid while sending message to: " + nodeId);
+        ctx.discovery().setCustomEventListener(StopRoutineDiscoveryMessage.class,
+            new CustomEventListener<StopRoutineDiscoveryMessage>() {
+                @Override public void onCustomEvent(ClusterNode snd, StopRoutineDiscoveryMessage msg) {
+                    if (!snd.id().equals(ctx.localNodeId())) {
+                        UUID routineId = msg.routineId();
 
-                                    fut0.onDone(err);
-                                }
-                            }
-                        }
+                        unregisterRemote(routineId);
+                    }
+                }
+            });
 
-                        break;
+        ctx.discovery().setCustomEventListener(StopRoutineAckDiscoveryMessage.class,
+            new CustomEventListener<StopRoutineAckDiscoveryMessage>() {
+                @Override public void onCustomEvent(ClusterNode snd, StopRoutineAckDiscoveryMessage msg) {
+                    StopFuture fut = stopFuts.remove(msg.routineId());
 
-                    default:
-                        assert false : "Unexpected event received: " + evt.shortDisplay();
+                    if (fut != null)
+                        fut.onDone();
                 }
-            }
-        }, EVT_NODE_JOINED, EVT_NODE_LEFT, EVT_NODE_FAILED);
+            });
 
         ctx.io().addMessageListener(TOPIC_CONTINUOUS, new GridMessageListener() {
             @Override public void onMessage(UUID nodeId, Object obj) {
@@ -258,26 +209,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
                 }
 
                 switch (msg.type()) {
-                    case MSG_START_REQ:
-                        processStartRequest(nodeId, msg);
-
-                        break;
-
-                    case MSG_START_ACK:
-                        processStartAck(nodeId, msg);
-
-                        break;
-
-                    case MSG_STOP_REQ:
-                        processStopRequest(nodeId, msg);
-
-                        break;
-
-                    case MSG_STOP_ACK:
-                        processStopAck(nodeId, msg);
-
-                        break;
-
                     case MSG_EVT_NOTIFICATION:
                         processNotification(nodeId, msg);
 
@@ -323,9 +254,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             pendingLock.lock();
 
             try {
-                // Create empty pending set.
-                pending.put(nodeId, new HashSet<GridContinuousMessage>());
-
                 DiscoveryData data = new DiscoveryData(ctx.localNodeId());
 
                 // Collect listeners information (will be sent to
@@ -486,32 +414,9 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             });
         }
 
-        Collection<? extends ClusterNode> nodes;
-        Collection<UUID> nodeIds;
-
         pendingLock.lock();
 
         try {
-            // Nodes that participate in routine (request will be sent to these nodes directly).
-            nodes = F.view(ctx.discovery().allNodes(), F.and(prjPred, F.remoteNodes(ctx.localNodeId())));
-
-            // Stop with exception if projection is empty.
-            if (nodes.isEmpty() && !locIncluded) {
-                return new GridFinishedFuture<>(
-                    new ClusterTopologyCheckedException("Failed to register remote continuous listener (projection is empty)."));
-            }
-
-            // IDs of nodes where request will be sent.
-            nodeIds = new GridConcurrentHashSet<>(F.viewReadOnly(nodes, F.node2id()));
-
-            // If there are currently joining nodes, add request to their pending lists.
-            // Node IDs set is updated to make sure that we wait for acknowledgement from
-            // these nodes.
-            for (Map.Entry<UUID, Collection<GridContinuousMessage>> e : pending.entrySet()) {
-                if (nodeIds.add(e.getKey()))
-                    e.getValue().add(new GridContinuousMessage(MSG_START_REQ, routineId, null, reqData, false));
-            }
-
             // Register routine locally.
             locInfos.put(routineId, new LocalRoutineInfo(prjPred, hnd, bufSize, interval));
         }
@@ -521,68 +426,19 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
 
         StartFuture fut = new StartFuture(ctx, routineId);
 
-        if (!nodeIds.isEmpty()) {
-            // Wait for acknowledgements.
-            waitForStartAck.put(routineId, nodeIds);
-
-            startFuts.put(routineId, fut);
-
-            // Register acknowledge timeout (timeout object will be removed when
-            // future is completed).
-            fut.addTimeoutObject(new GridTimeoutObjectAdapter(ackTimeout) {
-                @Override public void onTimeout() {
-                    // Stop waiting for acknowledgements.
-                    Collection<UUID> ids = waitForStartAck.remove(routineId);
-
-                    if (ids != null) {
-                        StartFuture f = startFuts.remove(routineId);
+        startFuts.put(routineId, fut);
 
-                        assert f != null;
-
-                        // If there are still nodes without acknowledgements,
-                        // Stop routine with exception. Continue and complete
-                        // future otherwise.
-                        if (!ids.isEmpty()) {
-                            f.onDone(new IgniteCheckedException("Failed to get start acknowledgement from nodes (timeout " +
-                                "expired): " + ids + ". Will unregister all continuous listeners."));
-
-                            stopRoutine(routineId);
-                        }
-                        else
-                            f.onRemoteRegistered();
-                    }
-                }
-            });
+        try {
+            ctx.discovery().sendCustomEvent(new StartRoutineDiscoveryMessage(routineId, reqData));
         }
+        catch (IgniteException e) { // Marshaller exception may occurs if user pass unmarshallable filter.
+            startFuts.remove(routineId);
 
-        if (!nodes.isEmpty()) {
-            // Do not send projection predicate (nodes already filtered).
-            reqData.projectionPredicate(null);
-            reqData.projectionPredicateBytes(null);
-
-            // Send start requests.
-            try {
-                GridContinuousMessage req = new GridContinuousMessage(MSG_START_REQ, routineId, null, reqData, false);
-
-                sendWithRetries(nodes, req, null);
-            }
-            catch (IgniteCheckedException e) {
-                startFuts.remove(routineId);
-                waitForStartAck.remove(routineId);
-
-                fut.onDone(e);
-
-                stopRoutine(routineId);
+            locInfos.remove(routineId);
 
-                locIncluded = false;
-            }
-        }
-        else {
-            // There are no remote nodes, but we didn't throw topology exception.
-            assert locIncluded;
+            fut.onDone(e);
 
-            // Do not wait anything from remote nodes.
-            fut.onRemoteRegistered();
+            return fut;
         }
 
         // Register local handler if needed.
@@ -640,61 +496,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             // Unregister handler locally.
             unregisterHandler(routineId, routine.hnd, true);
 
-            pendingLock.lock();
-
-            try {
-                // Remove pending requests for this routine.
-                for (Collection<GridContinuousMessage> msgs : pending.values()) {
-                    Iterator<GridContinuousMessage> it = msgs.iterator();
-
-                    while (it.hasNext()) {
-                        if (it.next().routineId().equals(routineId))
-                            it.remove();
-                    }
-                }
-            }
-            finally {
-                pendingLock.unlock();
-            }
-
-            // Nodes where to send stop requests.
-            Collection<? extends ClusterNode> nodes = F.view(ctx.discovery().allNodes(),
-                F.and(routine.prjPred, F.remoteNodes(ctx.localNodeId())));
-
-            if (!nodes.isEmpty()) {
-                // Wait for acknowledgements.
-                waitForStopAck.put(routineId, new GridConcurrentHashSet<>(F.viewReadOnly(nodes, F.node2id())));
-
-                // Register acknowledge timeout (timeout object will be removed when
-                // future is completed).
-                fut.addTimeoutObject(new StopTimeoutObject(ackTimeout, routineId,
-                    new GridContinuousMessage(MSG_STOP_REQ, routineId, null, null, false)));
-
-                // Send stop requests.
-                try {
-                    for (ClusterNode node : nodes) {
-                        try {
-                            sendWithRetries(node.id(),
-                                new GridContinuousMessage(MSG_STOP_REQ, routineId, null, null, false),
-                                null);
-                        }
-                        catch (ClusterTopologyCheckedException ignored) {
-                            U.warn(log, "Failed to send stop request (node left topology): " + node.id());
-                        }
-                    }
-                }
-                catch (IgniteCheckedException e) {
-                    stopFuts.remove(routineId);
-                    waitForStopAck.remove(routineId);
-
-                    fut.onDone(e);
-                }
-            }
-            else {
-                stopFuts.remove(routineId);
-
-                fut.onDone();
-            }
+            ctx.discovery().sendCustomEvent(new StopRoutineDiscoveryMessage(routineId));
         }
 
         return fut;
@@ -727,7 +529,7 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             assert info.interval == 0 || !sync;
 
             if (sync) {
-                SyncMessageAckFuture fut = new SyncMessageAckFuture(ctx, nodeId);
+                SyncMessageAckFuture fut = new SyncMessageAckFuture(nodeId);
 
                 IgniteUuid futId = IgniteUuid.randomUuid();
 
@@ -782,12 +584,12 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
      * @param nodeId Sender ID.
      * @param req Start request.
      */
-    private void processStartRequest(UUID nodeId, GridContinuousMessage req) {
+    private void processStartRequest(UUID nodeId, StartRoutineDiscoveryMessage req) {
         assert nodeId != null;
         assert req != null;
 
         UUID routineId = req.routineId();
-        StartRequestData data = req.data();
+        StartRequestData data = req.startRequestData();
 
         GridContinuousHandler hnd = data.handler();
 
@@ -836,100 +638,14 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             }
         }
 
-        try {
-            sendWithRetries(nodeId, new GridContinuousMessage(MSG_START_ACK, routineId, null, err, false), null);
-        }
-        catch (ClusterTopologyCheckedException ignored) {
-            if (log.isDebugEnabled())
-                log.debug("Failed to send start acknowledgement to node (is node alive?): " + nodeId);
-        }
-        catch (IgniteCheckedException e) {
-            U.error(log, "Failed to send start acknowledgement to node: " + nodeId, e);
-        }
+        if (err != null)
+            req.addError(ctx.localNodeId(), err);
 
         if (registered)
             hnd.onListenerRegistered(routineId, ctx);
     }
 
     /**
-     * @param nodeId Sender ID.
-     * @param ack Start acknowledgement.
-     */
-    private void processStartAck(UUID nodeId, GridContinuousMessage ack) {
-        assert nodeId != null;
-        assert ack != null;
-
-        UUID routineId = ack.routineId();
-
-        final IgniteCheckedException err = ack.data();
-
-        if (err != null) {
-            if (waitForStartAck.remove(routineId) != null) {
-                final StartFuture fut = startFuts.remove(routineId);
-
-                if (fut != null) {
-                    fut.onDone(err);
-
-                    stopRoutine(routineId);
-                }
-            }
-        }
-
-        Collection<UUID> nodeIds = waitForStartAck.get(routineId);
-
-        if (nodeIds != null) {
-            nodeIds.remove(nodeId);
-
-            if (nodeIds.isEmpty())
-                completeStartFuture(routineId);
-        }
-    }
-
-    /**
-     * @param nodeId Sender ID.
-     * @param req Stop request.
-     */
-    private void processStopRequest(UUID nodeId, GridContinuousMessage req) {
-        assert nodeId != null;
-        assert req != null;
-
-        UUID routineId = req.routineId();
-
-        unregisterRemote(routineId);
-
-        try {
-            sendWithRetries(nodeId, new GridContinuousMessage(MSG_STOP_ACK, routineId, null, null, false), null);
-        }
-        catch (ClusterTopologyCheckedException ignored) {
-            if (log.isDebugEnabled())
-                log.debug("Failed to send stop acknowledgement to node (is node alive?): " + nodeId);
-        }
-        catch (IgniteCheckedException e) {
-            U.error(log, "Failed to send stop acknowledgement to node: " + nodeId, e);
-        }
-    }
-
-    /**
-     * @param nodeId Sender ID.
-     * @param ack Stop acknowledgement.
-     */
-    private void processStopAck(UUID nodeId, GridContinuousMessage ack) {
-        assert nodeId != null;
-        assert ack != null;
-
-        UUID routineId = ack.routineId();
-
-        Collection<UUID> nodeIds = waitForStopAck.get(routineId);
-
-        if (nodeIds != null) {
-            nodeIds.remove(nodeId);
-
-            if (nodeIds.isEmpty())
-                completeStopFuture(routineId);
-        }
-    }
-
-    /**
      * @param msg Message.
      */
     private void processMessageAck(GridContinuousMessage msg) {
@@ -972,36 +688,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
     }
 
     /**
-     * @param routineId Consume ID.
-     */
-    private void completeStartFuture(UUID routineId) {
-        assert routineId != null;
-
-        if (waitForStartAck.remove(routineId) != null) {
-            StartFuture fut = startFuts.remove(routineId);
-
-            assert fut != null;
-
-            fut.onRemoteRegistered();
-        }
-    }
-
-    /**
-     * @param routineId Consume ID.
-     */
-    private void completeStopFuture(UUID routineId) {
-        assert routineId != null;
-
-        if (waitForStopAck.remove(routineId) != null) {
-            GridFutureAdapter <?> fut = stopFuts.remove(routineId);
-
-            assert fut != null;
-
-            fut.onDone();
-        }
-    }
-
-    /**
      * @param nodeId Node ID.
      * @param routineId Consume ID.
      * @param hnd Handler.
@@ -1589,13 +1275,6 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         private volatile GridTimeoutObject timeoutObj;
 
         /**
-         * Required by {@link Externalizable}.
-         */
-        public StartFuture() {
-            // No-op.
-        }
-
-        /**
          * @param ctx Kernal context.
          * @param routineId Consume ID.
          */
@@ -1706,10 +1385,9 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
         private UUID nodeId;
 
         /**
-         * @param ctx Kernal context.
          * @param nodeId Master node ID.
          */
-        SyncMessageAckFuture(GridKernalContext ctx, UUID nodeId) {
+        SyncMessageAckFuture(UUID nodeId) {
             this.nodeId = nodeId;
         }
 
@@ -1725,76 +1403,4 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             return S.toString(SyncMessageAckFuture.class, this);
         }
     }
-
-    /**
-     * Timeout object for stop process.
-     */
-    private class StopTimeoutObject extends GridTimeoutObjectAdapter {
-        /** Timeout. */
-        private final long timeout;
-
-        /** Routine ID. */
-        private final UUID routineId;
-
-        /** Request. */
-        private final GridContinuousMessage req;
-
-        /**
-         * @param timeout Timeout.
-         * @param routineId Routine ID.
-         * @param req Request.
-         */
-        protected StopTimeoutObject(long timeout, UUID routineId, GridContinuousMessage req) {
-            super(timeout);
-
-            assert routineId != null;
-            assert req != null;
-
-            this.timeout = timeout;
-            this.routineId = routineId;
-            this.req = req;
-        }
-
-        /** {@inheritDoc} */
-        @Override public void onTimeout() {
-            Collection<UUID> ids = waitForStopAck.remove(routineId);
-
-            if (ids != null) {
-                U.warn(log, "Failed to get stop acknowledgement from nodes (timeout expired): " + ids +
-                    ". Will retry.");
-
-                StopFuture f = stopFuts.get(routineId);
-
-                if (f != null) {
-                    if (!ids.isEmpty()) {
-                        waitForStopAck.put(routineId, ids);
-
-                        // Resend requests.
-                        for (UUID id : ids) {
-                            try {
-                                sendWithRetries(id, req, null);
-                            }
-                            catch (ClusterTopologyCheckedException ignored) {
-                                if (log.isDebugEnabled())
-                                    log.debug("Failed to resend stop request to node (is node alive?): " + id);
-                            }
-                            catch (IgniteCheckedException e) {
-                                U.error(log, "Failed to resend stop request to node: " + id, e);
-
-                                ids.remove(id);
-
-                                if (ids.isEmpty())
-                                    f.onDone(e);
-                            }
-                        }
-
-                        // Reschedule timeout.
-                        ctx.timeout().addTimeoutObject(new StopTimeoutObject(timeout, routineId, req));
-                    }
-                    else if (stopFuts.remove(routineId) != null)
-                        f.onDone();
-                }
-            }
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/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
new file mode 100644
index 0000000..4e5bb9c
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineAckDiscoveryMessage.java
@@ -0,0 +1,62 @@
+/*
+ * 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.processors.continuous;
+
+import org.apache.ignite.*;
+import org.apache.ignite.internal.managers.discovery.*;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class StartRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
+    /** Routine ID. */
+    private final UUID routineId;
+
+    /** */
+    private final Map<UUID, IgniteCheckedException> errs;
+
+    /**
+     * @param routineId Routine id.
+     * @param errs Errs.
+     */
+    public StartRoutineAckDiscoveryMessage(UUID routineId, Map<UUID, IgniteCheckedException> errs) {
+        this.routineId = routineId;
+        this.errs = new HashMap<>(errs);
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean forwardMinorVersion() {
+        return false;
+    }
+
+    /**
+     * @return Routine ID.
+     */
+    public UUID routineId() {
+        return routineId;
+    }
+
+    /**
+     * @return Errs.
+     */
+    public Map<UUID, IgniteCheckedException> errs() {
+        return errs;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/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
new file mode 100644
index 0000000..7fa78b6
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StartRoutineDiscoveryMessage.java
@@ -0,0 +1,89 @@
+/*
+ * 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.processors.continuous;
+
+import org.apache.ignite.*;
+import org.apache.ignite.internal.managers.discovery.*;
+import org.apache.ignite.spi.*;
+import org.apache.ignite.spi.discovery.tcp.messages.*;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class StartRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
+    /** Routine ID. */
+    private final UUID routineId;
+
+    /** */
+    private final StartRequestData startReqData;
+
+    /** */
+    private final Map<UUID, IgniteCheckedException> errs = new HashMap<>();
+
+    /**
+     * @param routineId Routine id.
+     * @param startReqData Start request data.
+     */
+    public StartRoutineDiscoveryMessage(UUID routineId, StartRequestData startReqData) {
+        this.routineId = routineId;
+        this.startReqData = startReqData;
+    }
+
+
+
+    /** {@inheritDoc} */
+    @Override public boolean forwardMinorVersion() {
+        return false;
+    }
+
+    /**
+     * @return Start request data.
+     */
+    public StartRequestData startRequestData() {
+        return startReqData;
+    }
+
+    /**
+     * @param nodeId Node id.
+     * @param e Exception.
+     */
+    public void addError(UUID nodeId, IgniteCheckedException e) {
+        errs.put(nodeId, e);
+    }
+
+    /**
+     * @return Routine ID.
+     */
+    public UUID routineId() {
+        return routineId;
+    }
+
+    /**
+     * @return Errs.
+     */
+    public Map<UUID, IgniteCheckedException> errs() {
+        return errs;
+    }
+
+    /** {@inheritDoc} */
+    @Override public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx) {
+        return new StartRoutineAckDiscoveryMessage(routineId, errs);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/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
new file mode 100644
index 0000000..755552b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineAckDiscoveryMessage.java
@@ -0,0 +1,49 @@
+/*
+ * 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.processors.continuous;
+
+import org.apache.ignite.internal.managers.discovery.*;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class StopRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
+    /** Routine ID. */
+    private final UUID routineId;
+
+    /**
+     * @param routineId Routine id.
+     */
+    public StopRoutineAckDiscoveryMessage(UUID routineId) {
+        this.routineId = routineId;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean forwardMinorVersion() {
+        return false;
+    }
+
+    /**
+     * @return Routine ID.
+     */
+    public UUID routineId() {
+        return routineId;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/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
new file mode 100644
index 0000000..9c480a0
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/StopRoutineDiscoveryMessage.java
@@ -0,0 +1,56 @@
+/*
+ * 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.processors.continuous;
+
+import org.apache.ignite.internal.managers.discovery.*;
+import org.apache.ignite.spi.*;
+import org.jetbrains.annotations.*;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class StopRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
+    /** Routine ID. */
+    private final UUID routineId;
+
+    /**
+     * @param routineId Routine id.
+     */
+    public StopRoutineDiscoveryMessage(UUID routineId) {
+        this.routineId = routineId;
+    }
+
+    /** {@inheritDoc} */
+    @Override public boolean forwardMinorVersion() {
+        return false;
+    }
+
+    /**
+     * @return Routine ID.
+     */
+    public UUID routineId() {
+        return routineId;
+    }
+
+    /** {@inheritDoc} */
+    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx) {
+        return new StopRoutineAckDiscoveryMessage(routineId);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
index 247ff67..84a5f41 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpi.java
@@ -17,6 +17,7 @@
 
 package org.apache.ignite.spi.discovery;
 
+import org.apache.ignite.*;
 import org.apache.ignite.cluster.*;
 import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.lang.*;
@@ -142,8 +143,9 @@ public interface DiscoverySpi extends IgniteSpi {
     /**
      * Sends custom message across the ring.
      * @param evt Event.
+     * @throws IgniteException if failed to marshal evt.
      */
-    public void sendCustomEvent(DiscoveryCustomMessage evt);
+    public void sendCustomEvent(DiscoveryCustomMessage evt) throws IgniteException;
 
     /**
      * Initiates failure of provided node.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
index 5a78f9f..378d5a3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/GridCacheContinuousQueryAbstractSelfTest.java
@@ -42,6 +42,7 @@ import javax.cache.*;
 import javax.cache.configuration.*;
 import javax.cache.event.*;
 import javax.cache.integration.*;
+import java.io.*;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.*;
@@ -57,7 +58,7 @@ import static org.apache.ignite.internal.processors.cache.query.CacheQueryType.*
 /**
  * Continuous queries tests.
  */
-public abstract class GridCacheContinuousQueryAbstractSelfTest extends GridCommonAbstractTest {
+public abstract class GridCacheContinuousQueryAbstractSelfTest extends GridCommonAbstractTest implements Serializable {
     /** IP finder. */
     private static final TcpDiscoveryIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
 
@@ -177,10 +178,7 @@ public abstract class GridCacheContinuousQueryAbstractSelfTest extends GridCommo
             assertEquals(String.valueOf(i), 3, ((Map)U.field(proc, "locInfos")).size());
             assertEquals(String.valueOf(i), 0, ((Map)U.field(proc, "rmtInfos")).size());
             assertEquals(String.valueOf(i), 0, ((Map)U.field(proc, "startFuts")).size());
-            assertEquals(String.valueOf(i), 0, ((Map)U.field(proc, "waitForStartAck")).size());
             assertEquals(String.valueOf(i), 0, ((Map)U.field(proc, "stopFuts")).size());
-            assertEquals(String.valueOf(i), 0, ((Map)U.field(proc, "waitForStopAck")).size());
-            assertEquals(String.valueOf(i), 0, ((Map)U.field(proc, "pending")).size());
 
             CacheContinuousQueryManager mgr = grid(i).context().cache().internalCache().context().continuousQueries();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e028de86/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
index 05fb52b..d1b25df 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySelfTest.java
@@ -539,7 +539,7 @@ public class TcpClientDiscoverySelfTest extends GridCommonAbstractTest {
         try {
             id = msg.remoteListen(null, new MessageListener());
 
-            msgLatch = new CountDownLatch(4);
+            msgLatch = new CountDownLatch(2);
 
             msg.send(null, "Message 1");
 
@@ -550,7 +550,7 @@ public class TcpClientDiscoverySelfTest extends GridCommonAbstractTest {
 
             checkNodes(3, 3);
 
-            msgLatch = new CountDownLatch(6);
+            msgLatch = new CountDownLatch(3);
 
             msg.send(null, "Message 2");
 



[10/47] incubator-ignite git commit: # IGNITE-831 Handle node segmented message.

Posted by sb...@apache.org.
# IGNITE-831 Handle node segmented message.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/660648bb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/660648bb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/660648bb

Branch: refs/heads/ignite-709_3
Commit: 660648bbb56f6a99ee4883c4fb986b33ec95f9ac
Parents: 37c6007
Author: sevdokimov <se...@gridgain.com>
Authored: Tue May 5 20:41:58 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Tue May 5 20:41:58 2015 +0300

----------------------------------------------------------------------
 .../continuous/GridContinuousProcessor.java     | 23 ++++++++++++++++++++
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  3 +++
 2 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/660648bb/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index d1923d9..0769479 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -146,6 +146,26 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             }
         }, EVT_NODE_LEFT, EVT_NODE_FAILED);
 
+        ctx.event().addLocalEventListener(new GridLocalEventListener() {
+            @Override public void onEvent(Event evt) {
+                for (Iterator<StartFuture> itr = startFuts.values().iterator(); itr.hasNext(); ) {
+                    StartFuture fut = itr.next();
+
+                    itr.remove();
+
+                    fut.onDone(new IgniteException("Topology segmented"));
+                }
+
+                for (Iterator<StopFuture> itr = stopFuts.values().iterator(); itr.hasNext(); ) {
+                    StopFuture fut = itr.next();
+
+                    itr.remove();
+
+                    fut.onDone(new IgniteException("Topology segmented"));
+                }
+            }
+        }, EVT_NODE_SEGMENTED);
+
         ctx.discovery().setCustomEventListener(StartRoutineDiscoveryMessage.class,
             new CustomEventListener<StartRoutineDiscoveryMessage>() {
                 @Override public void onCustomEvent(ClusterNode snd, StartRoutineDiscoveryMessage msg) {
@@ -504,6 +524,9 @@ public class GridContinuousProcessor extends GridProcessorAdapter {
             unregisterHandler(routineId, routine.hnd, true);
 
             ctx.discovery().sendCustomEvent(new StopRoutineDiscoveryMessage(routineId));
+
+            if (ctx.isStopping())
+                fut.onDone();
         }
 
         return fut;

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/660648bb/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index 59f4708..dc89d6a 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -390,6 +390,9 @@ public class TcpClientDiscoverySpi extends TcpDiscoverySpiAdapter implements Tcp
 
     /** {@inheritDoc} */
     @Override public void sendCustomEvent(DiscoveryCustomMessage evt) {
+        if (segmentation)
+            throw new IgniteException("Failed to send custom message: client is disconnected");
+
         try {
             sockWriter.sendMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(evt)));
         }


[32/47] incubator-ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-836_2' into ignite-709_2

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-836_2' into ignite-709_2


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/668746f4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/668746f4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/668746f4

Branch: refs/heads/ignite-709_3
Commit: 668746f4191f36f7f12c6a17e1d2903bea983a3d
Parents: 7099c56 073c48c
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 13:04:38 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 13:04:38 2015 +0300

----------------------------------------------------------------------
 .../internal/events/DiscoveryCustomEvent.java   |  18 +-
 .../managers/discovery/CustomEventListener.java |  31 +
 .../discovery/CustomMessageWrapper.java         |  58 ++
 .../discovery/DiscoveryCustomMessage.java       |  41 +
 .../discovery/GridDiscoveryManager.java         |  99 ++-
 .../cache/DynamicCacheChangeBatch.java          |  15 +-
 .../GridCachePartitionExchangeManager.java      |   4 +-
 .../processors/cache/GridCacheProcessor.java    |   9 +-
 .../continuous/GridContinuousMessageType.java   |  12 -
 .../continuous/GridContinuousProcessor.java     | 796 ++++---------------
 .../processors/continuous/StartRequestData.java | 267 +++++++
 .../StartRoutineAckDiscoveryMessage.java        |  71 ++
 .../StartRoutineDiscoveryMessage.java           |  95 +++
 .../StopRoutineAckDiscoveryMessage.java         |  58 ++
 .../continuous/StopRoutineDiscoveryMessage.java |  59 ++
 .../ignite/spi/discovery/DiscoverySpi.java      |   7 +-
 .../discovery/DiscoverySpiCustomMessage.java    |  32 +
 .../spi/discovery/DiscoverySpiListener.java     |   5 +-
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  25 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  92 ++-
 .../TcpDiscoveryCustomEventMessage.java         |   9 +-
 ...ridCacheContinuousQueryAbstractSelfTest.java |   6 +-
 .../discovery/AbstractDiscoverySelfTest.java    |   8 +-
 .../tcp/TcpClientDiscoverySpiSelfTest.java      |   6 +-
 24 files changed, 1073 insertions(+), 750 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/668746f4/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------


[16/47] incubator-ignite git commit: # IGNITE-831 Remove RingEndAwareCustomMessage.

Posted by sb...@apache.org.
# IGNITE-831 Remove RingEndAwareCustomMessage.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/657afd09
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/657afd09
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/657afd09

Branch: refs/heads/ignite-709_3
Commit: 657afd09024978d1c50eb1b0a5db19298f0e1edc
Parents: 880b59b
Author: sevdokimov <se...@gridgain.com>
Authored: Wed May 6 13:28:59 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Wed May 6 14:43:16 2015 +0300

----------------------------------------------------------------------
 .../discovery/DiscoveryCustomMessage.java       |  7 +++++
 .../discovery/RingEndAwareCustomMessage.java    | 31 --------------------
 .../cache/DynamicCacheChangeBatch.java          |  6 ++++
 .../StartRoutineAckDiscoveryMessage.java        |  6 ++++
 .../StartRoutineDiscoveryMessage.java           |  4 +--
 .../StopRoutineAckDiscoveryMessage.java         |  6 ++++
 .../continuous/StopRoutineDiscoveryMessage.java |  4 +--
 .../spi/discovery/tcp/TcpDiscoverySpi.java      |  9 ++----
 8 files changed, 32 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/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 dcb0cea..49a791e 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
@@ -17,6 +17,8 @@
 
 package org.apache.ignite.internal.managers.discovery;
 
+import org.jetbrains.annotations.*;
+
 import java.io.*;
 
 /**
@@ -29,4 +31,9 @@ public interface DiscoveryCustomMessage extends Serializable {
      * @return {@code true} if minor topology version should be increased.
      */
     public boolean forwardMinorVersion();
+
+    /**
+     * Called when message passed the ring.
+     */
+    @Nullable public DiscoveryCustomMessage newMessageOnRingEnd();
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java
deleted file mode 100644
index 41cee8e..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/RingEndAwareCustomMessage.java
+++ /dev/null
@@ -1,31 +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.spi.*;
-import org.jetbrains.annotations.*;
-
-/**
- *
- */
-public interface RingEndAwareCustomMessage extends DiscoveryCustomMessage {
-    /**
-     *
-     */
-    @Nullable public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx);
-}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/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 0257307..330f822 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,6 +20,7 @@ package org.apache.ignite.internal.processors.cache;
 import org.apache.ignite.internal.managers.discovery.*;
 import org.apache.ignite.internal.util.tostring.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
+import org.jetbrains.annotations.*;
 
 import java.util.*;
 
@@ -77,4 +78,9 @@ public class DynamicCacheChangeBatch implements DiscoveryCustomMessage {
     @Override public boolean forwardMinorVersion() {
         return true;
     }
+
+    /** {@inheritDoc} */
+    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/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 4e5bb9c..2050811 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
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.processors.continuous;
 
 import org.apache.ignite.*;
 import org.apache.ignite.internal.managers.discovery.*;
+import org.jetbrains.annotations.*;
 
 import java.util.*;
 
@@ -46,6 +47,11 @@ public class StartRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
         return false;
     }
 
+    /** {@inheritDoc} */
+    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+        return null;
+    }
+
     /**
      * @return Routine ID.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/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 492a1e7..1866901 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
@@ -27,7 +27,7 @@ import java.util.*;
 /**
  *
  */
-public class StartRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
+public class StartRoutineDiscoveryMessage implements DiscoveryCustomMessage {
     /** Routine ID. */
     private final UUID routineId;
 
@@ -81,7 +81,7 @@ public class StartRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Override public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx) {
+    @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
         return new StartRoutineAckDiscoveryMessage(routineId, errs);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/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 755552b..2e3002b 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
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.processors.continuous;
 
 import org.apache.ignite.internal.managers.discovery.*;
+import org.jetbrains.annotations.*;
 
 import java.util.*;
 
@@ -40,6 +41,11 @@ public class StopRoutineAckDiscoveryMessage implements DiscoveryCustomMessage {
         return false;
     }
 
+    /** {@inheritDoc} */
+    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
+        return null;
+    }
+
     /**
      * @return Routine ID.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/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 9c480a0..8b08960 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
@@ -26,7 +26,7 @@ import java.util.*;
 /**
  *
  */
-public class StopRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
+public class StopRoutineDiscoveryMessage implements DiscoveryCustomMessage {
     /** Routine ID. */
     private final UUID routineId;
 
@@ -50,7 +50,7 @@ public class StopRoutineDiscoveryMessage implements RingEndAwareCustomMessage {
     }
 
     /** {@inheritDoc} */
-    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd(IgniteSpiContext ctx) {
+    @Nullable @Override public DiscoveryCustomMessage newMessageOnRingEnd() {
         return new StopRoutineAckDiscoveryMessage(routineId);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/657afd09/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index d13a6d8..f8236f1 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -4481,13 +4481,10 @@ public class TcpDiscoverySpi extends TcpDiscoverySpiAdapter implements TcpDiscov
                     try {
                         DiscoveryCustomMessage msgObj = marsh.unmarshal(msg.messageBytes(), U.gridClassLoader());
 
-                        if (msgObj instanceof RingEndAwareCustomMessage) {
-                            DiscoveryCustomMessage nextMsg = ((RingEndAwareCustomMessage)msgObj)
-                                .newMessageOnRingEnd(getSpiContext());
+                        DiscoveryCustomMessage nextMsg = msgObj.newMessageOnRingEnd();
 
-                            if (nextMsg != null)
-                                addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(nextMsg)));
-                        }
+                        if (nextMsg != null)
+                            addMessage(new TcpDiscoveryCustomEventMessage(getLocalNodeId(), marsh.marshal(nextMsg)));
                     }
                     catch (IgniteCheckedException e) {
                         U.error(log, "Failed to unmarshal discovery custom message.", e);


[41/47] incubator-ignite git commit: # IGNITE-709 Revert bad fix.

Posted by sb...@apache.org.
# IGNITE-709 Revert bad fix.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/6762cf94
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/6762cf94
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/6762cf94

Branch: refs/heads/ignite-709_3
Commit: 6762cf9433725c58381a5629421982f473519738
Parents: ccc854a
Author: sevdokimov <se...@gridgain.com>
Authored: Fri May 15 14:51:50 2015 +0300
Committer: sevdokimov <se...@gridgain.com>
Committed: Fri May 15 14:51:50 2015 +0300

----------------------------------------------------------------------
 .../internal/processors/cache/GridCacheUtils.java     | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/6762cf94/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index 8e082c0..549f42f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -631,14 +631,9 @@ public class GridCacheUtils {
      * @return Oldest node for the given topology version.
      */
     public static ClusterNode oldest(GridCacheContext cctx, AffinityTopologyVersion topOrder) {
-        Collection<ClusterNode> aliveCacheNodes = aliveNodes(cctx, topOrder);
-
-        if (aliveCacheNodes.isEmpty())
-            return cctx.localNode();
-
         ClusterNode oldest = null;
 
-        for (ClusterNode n : aliveCacheNodes)
+        for (ClusterNode n : aliveNodes(cctx, topOrder))
             if (oldest == null || n.order() < oldest.order())
                 oldest = n;
 
@@ -656,14 +651,9 @@ public class GridCacheUtils {
      * @return Oldest node for the given topology version.
      */
     public static ClusterNode oldest(GridCacheSharedContext cctx, AffinityTopologyVersion topOrder) {
-        Collection<ClusterNode> aliveCacheNodes = aliveCacheNodes(cctx, topOrder);
-
-        if (aliveCacheNodes.isEmpty())
-            return cctx.localNode();
-
         ClusterNode oldest = null;
 
-        for (ClusterNode n : aliveCacheNodes) {
+        for (ClusterNode n : aliveCacheNodes(cctx, topOrder)) {
             if (oldest == null || n.order() < oldest.order())
                 oldest = n;
         }