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/06/23 10:04:09 UTC
[1/3] incubator-ignite git commit: #IGNITE Added message on init stop.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-1043 cd9a97cd3 -> 7cd588304
#IGNITE Added message on init stop.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/16059962
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/16059962
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/16059962
Branch: refs/heads/ignite-1043
Commit: 16059962e303f7580c6524b1e0f93c2dcce9eaa4
Parents: de0930d
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Mon Jun 22 15:30:48 2015 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Mon Jun 22 15:30:48 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/MarshallerContextImpl.java | 12 +-
.../cache/GridCacheDaemonNodeStopSelfTest.java | 119 +++++++++++++++++++
.../testsuites/IgniteCacheTestSuite3.java | 1 +
3 files changed, 130 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/16059962/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
index 48f24ac..9f7c983 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
@@ -124,10 +124,18 @@ public class MarshallerContextImpl extends MarshallerContextAdapter {
/** {@inheritDoc} */
@Override protected String className(int id) throws IgniteCheckedException {
- if (cache == null)
+ GridCacheAdapter<Integer, String> cache0 = cache;
+
+ if (cache0 == null) {
U.awaitQuiet(latch);
- String clsName = cache.get(id);
+ cache0 = cache;
+
+ if (cache0 == null)
+ throw new IllegalStateException("Failed to initialize marshaller context (grid is stopping).");
+ }
+
+ String clsName = cache0.get(id);
if (clsName == null) {
File file = new File(workDir, id + ".classname");
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/16059962/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDaemonNodeStopSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDaemonNodeStopSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDaemonNodeStopSelfTest.java
new file mode 100644
index 0000000..c56ad1c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheDaemonNodeStopSelfTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.cache;
+
+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.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+import org.apache.ignite.testframework.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import java.util.concurrent.*;
+
+import static org.apache.ignite.cache.CacheAtomicityMode.*;
+import static org.apache.ignite.cache.CacheMode.*;
+
+/**
+ * Test cache operations with daemon node.
+ */
+public class GridCacheDaemonNodeStopSelfTest extends GridCommonAbstractTest {
+ /** */
+ private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+ /** Daemon flag. */
+ protected boolean daemon;
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ daemon = false;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration c = super.getConfiguration(gridName);
+
+ c.setDaemon(daemon);
+
+ TcpDiscoverySpi disco = new TcpDiscoverySpi();
+
+ disco.setIpFinder(ipFinder);
+
+ c.setDiscoverySpi(disco);
+
+ c.setConnectorConfiguration(null);
+
+ CacheConfiguration cc = defaultCacheConfiguration();
+
+ cc.setCacheMode(LOCAL);
+ cc.setAtomicityMode(ATOMIC);
+
+ TransactionConfiguration cfg = new TransactionConfiguration();
+
+ c.setTransactionConfiguration(cfg);
+
+ c.setCacheConfiguration(cc);
+
+ return c;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testStartStop() throws Exception {
+ try {
+ daemon = true;
+
+ final IgniteEx daemonNode = startGrid(0);
+
+ final IgniteInternalFuture<Object> f = GridTestUtils.runAsync(new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ daemonNode.context().marshallerContext().getClass(1,
+ GridCacheDaemonNodeStopSelfTest.class.getClassLoader());
+
+ return null;
+ }
+ });
+
+ GridTestUtils.assertThrowsWithCause(new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ f.get(300);
+
+ return null;
+ }
+ }, IgniteFutureTimeoutCheckedException.class);
+
+ // Stop grid.
+ stopGrid(0);
+
+ GridTestUtils.assertThrowsWithCause(new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ f.get(5, TimeUnit.SECONDS);
+
+ return null;
+ }
+ }, IllegalStateException.class);
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/16059962/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
index 5947d33..b83f50f 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite3.java
@@ -100,6 +100,7 @@ public class IgniteCacheTestSuite3 extends TestSuite {
suite.addTestSuite(GridCacheDaemonNodeLocalSelfTest.class);
suite.addTestSuite(GridCacheDaemonNodePartitionedSelfTest.class);
suite.addTestSuite(GridCacheDaemonNodeReplicatedSelfTest.class);
+ suite.addTestSuite(GridCacheDaemonNodeStopSelfTest.class);
// Write-behind.
suite.addTest(IgniteCacheWriteBehindTestSuite.suite());
[3/3] incubator-ignite git commit: Merge remote-tracking branch
'remotes/origin/ignite-sprint-6' into ignite-1043
Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-sprint-6' into ignite-1043
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/7cd58830
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/7cd58830
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/7cd58830
Branch: refs/heads/ignite-1043
Commit: 7cd5883046d7d3d413043249f9721bd6126f1555
Parents: cd9a97c 285d790
Author: ivasilinets <iv...@gridgain.com>
Authored: Tue Jun 23 11:03:27 2015 +0300
Committer: ivasilinets <iv...@gridgain.com>
Committed: Tue Jun 23 11:03:27 2015 +0300
----------------------------------------------------------------------
.../ignite/internal/MarshallerContextImpl.java | 12 +-
.../GridDhtPartitionsExchangeFuture.java | 49 ++++++--
.../communication/tcp/TcpCommunicationSpi.java | 12 ++
.../cache/GridCacheDaemonNodeStopSelfTest.java | 119 +++++++++++++++++++
.../GridTcpCommunicationSpiConfigSelfTest.java | 1 -
.../testsuites/IgniteCacheTestSuite3.java | 1 +
6 files changed, 179 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
[2/3] incubator-ignite git commit: # ignite-sprint-6 race in tcp
communication connection, retry full partition map send
Posted by sb...@apache.org.
# ignite-sprint-6 race in tcp communication connection, retry full partition map send
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/285d790f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/285d790f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/285d790f
Branch: refs/heads/ignite-1043
Commit: 285d790ff0ce597fde65a778c381e59a4f1c89aa
Parents: 1605996
Author: sboikov <sb...@gridgain.com>
Authored: Mon Jun 22 16:40:08 2015 +0300
Committer: sboikov <sb...@gridgain.com>
Committed: Mon Jun 22 16:58:01 2015 +0300
----------------------------------------------------------------------
.../GridDhtPartitionsExchangeFuture.java | 49 +++++++++++++++-----
.../communication/tcp/TcpCommunicationSpi.java | 12 +++++
.../GridTcpCommunicationSpiConfigSelfTest.java | 1 -
3 files changed, 49 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/285d790f/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 9f18c98..7c780b0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -1078,18 +1078,7 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
log.debug("Received message for finished future (will reply only to sender) [msg=" + msg +
", fut=" + this + ']');
- try {
- ClusterNode n = cctx.node(nodeId);
-
- if (n != null)
- sendAllPartitions(F.asList(n), exchId);
- }
- catch (IgniteCheckedException e) {
- scheduleRecheck();
-
- U.error(log, "Failed to send full partition map to node (will retry after timeout) [node=" + nodeId +
- ", exchangeId=" + exchId + ']', e);
- }
+ sendAllPartitions(nodeId, cctx.gridConfig().getNetworkSendRetryCount());
}
else {
initFut.listen(new CI1<IgniteInternalFuture<Boolean>>() {
@@ -1146,6 +1135,42 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
}
/**
+ * @param nodeId Node ID.
+ * @param retryCnt Number of retries.
+ */
+ private void sendAllPartitions(final UUID nodeId, final int retryCnt) {
+ ClusterNode n = cctx.node(nodeId);
+
+ try {
+ if (n != null)
+ sendAllPartitions(F.asList(n), exchId);
+ }
+ catch (IgniteCheckedException e) {
+ if (e instanceof ClusterTopologyCheckedException || !cctx.discovery().alive(n)) {
+ log.debug("Failed to send full partition map to node, node left grid " +
+ "[rmtNode=" + nodeId + ", exchangeId=" + exchId + ']');
+
+ return;
+ }
+
+ if (retryCnt > 0) {
+ long timeout = cctx.gridConfig().getNetworkSendRetryDelay();
+
+ LT.error(log, e, "Failed to send full partition map to node (will retry after timeout) " +
+ "[node=" + nodeId + ", exchangeId=" + exchId + ", timeout=" + timeout + ']');
+
+ cctx.time().addTimeoutObject(new GridTimeoutObjectAdapter(timeout) {
+ @Override public void onTimeout() {
+ sendAllPartitions(nodeId, retryCnt - 1);
+ }
+ });
+ }
+ else
+ U.error(log, "Failed to send full partition map [node=" + n + ", exchangeId=" + exchId + ']', e);
+ }
+ }
+
+ /**
* @param nodeId Sender node ID.
* @param msg Full partition info.
*/
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/285d790f/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 1035ee5..addf243d 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -1748,6 +1748,18 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
assert old == null : "Client already created " +
"[node=" + node + ", client=" + client0 + ", oldClient=" + old + ']';
+
+ if (client0 instanceof GridTcpNioCommunicationClient) {
+ GridTcpNioCommunicationClient tcpClient = ((GridTcpNioCommunicationClient)client0);
+
+ if (tcpClient.session().closeTime() > 0 && clients.remove(nodeId, client0)) {
+ if (log.isDebugEnabled())
+ log.debug("Session was closed after client creation, will retry " +
+ "[node=" + node + ", client=" + client0 + ']');
+
+ client0 = null;
+ }
+ }
}
else
U.sleep(200);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/285d790f/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConfigSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConfigSelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConfigSelfTest.java
index c4a0916..4062931 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConfigSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiConfigSelfTest.java
@@ -37,7 +37,6 @@ public class GridTcpCommunicationSpiConfigSelfTest extends GridSpiAbstractConfig
checkNegativeSpiProperty(new TcpCommunicationSpi(), "messageQueueLimit", -1);
checkNegativeSpiProperty(new TcpCommunicationSpi(), "reconnectCount", 0);
checkNegativeSpiProperty(new TcpCommunicationSpi(), "selectorsCount", 0);
- checkNegativeSpiProperty(new TcpCommunicationSpi(), "minimumBufferedMessageCount", -1);
checkNegativeSpiProperty(new TcpCommunicationSpi(), "connectTimeout", -1);
checkNegativeSpiProperty(new TcpCommunicationSpi(), "maxConnectTimeout", -1);
checkNegativeSpiProperty(new TcpCommunicationSpi(), "socketWriteTimeout", -1);