You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/07/19 09:14:08 UTC
[1/5] ignite git commit: IGNITE-5774 - Added more information about
long-running partition release future
Repository: ignite
Updated Branches:
refs/heads/master e5f2d90c6 -> cde3da448
IGNITE-5774 - Added more information about long-running partition release future
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a71691ae
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a71691ae
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a71691ae
Branch: refs/heads/master
Commit: a71691ae22e30eea775324363d13e8875be8c4d9
Parents: 0d6b730
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Tue Jul 18 12:37:14 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Jul 18 12:37:14 2017 +0300
----------------------------------------------------------------------
.../apache/ignite/IgniteSystemProperties.java | 7 +++
.../cache/CacheObjectsReleaseFuture.java | 60 ++++++++++++++++++++
.../cache/GridCacheExplicitLockSpan.java | 10 +++-
.../processors/cache/GridCacheMvccManager.java | 24 +++++---
.../cache/GridCacheSharedContext.java | 4 +-
.../GridDhtPartitionsExchangeFuture.java | 30 +++++++---
.../cache/transactions/IgniteTxAdapter.java | 44 ++++++++++++--
.../cache/transactions/IgniteTxManager.java | 5 +-
.../util/future/GridCompoundFuture.java | 6 +-
9 files changed, 161 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 1a2887a..616ac3f 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -677,6 +677,13 @@ public final class IgniteSystemProperties {
"IGNITE_CLIENT_CACHE_CHANGE_MESSAGE_TIMEOUT";
/**
+ * If a partition release future completion time during an exchange exceeds this threshold, the contents of
+ * the future will be dumped to the log on exchange. Default is {@code 0} (disabled).
+ */
+ public static final String IGNITE_PARTITION_RELEASE_FUTURE_DUMP_THRESHOLD =
+ "IGNITE_PARTITION_RELEASE_FUTURE_DUMP_THRESHOLD";
+
+ /**
* Enforces singleton.
*/
private IgniteSystemProperties() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectsReleaseFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectsReleaseFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectsReleaseFuture.java
new file mode 100644
index 0000000..f7af009
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheObjectsReleaseFuture.java
@@ -0,0 +1,60 @@
+/*
+ * 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.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.util.future.GridCompoundFuture;
+import org.apache.ignite.lang.IgniteReducer;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ *
+ */
+public class CacheObjectsReleaseFuture<T, R> extends GridCompoundFuture<T, R> {
+ /** */
+ private AffinityTopologyVersion topVer;
+
+ /** */
+ private String type;
+
+ /**
+ * @param type Wait object type.
+ * @param topVer Topology version to wait for.
+ */
+ public CacheObjectsReleaseFuture(String type, AffinityTopologyVersion topVer) {
+ this.type = type;
+ this.topVer = topVer;
+ }
+
+ /**
+ * @param type Wait object type.
+ * @param topVer Topology version to wait for.
+ * @param rdc Reducer object.
+ */
+ public CacheObjectsReleaseFuture(String type, AffinityTopologyVersion topVer, @Nullable IgniteReducer<T, R> rdc) {
+ super(rdc);
+
+ this.topVer = topVer;
+ this.type = type;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return type + "ReleaseFuture [topVer=" + topVer + ", futures=" + futures() + "]";
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheExplicitLockSpan.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheExplicitLockSpan.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheExplicitLockSpan.java
index df32e77..b0cb302 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheExplicitLockSpan.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheExplicitLockSpan.java
@@ -51,15 +51,21 @@ public class GridCacheExplicitLockSpan extends ReentrantLock {
/** Span lock release future. */
@GridToStringExclude
- private final GridFutureAdapter<Object> releaseFut = new GridFutureAdapter<>();
+ private final GridFutureAdapter<Object> releaseFut;
/**
* @param topVer Topology version.
* @param cand Candidate.
*/
- public GridCacheExplicitLockSpan(AffinityTopologyVersion topVer, GridCacheMvccCandidate cand) {
+ public GridCacheExplicitLockSpan(final AffinityTopologyVersion topVer, final GridCacheMvccCandidate cand) {
this.topVer = topVer;
+ releaseFut = new GridFutureAdapter<Object>() {
+ @Override public String toString() {
+ return "ExplicitLockSpan [topVer=" + topVer + ", firstCand=" + cand + "]";
+ }
+ };
+
ensureDeque(cand.key()).addFirst(cand);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
index b156708..09bf762 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMvccManager.java
@@ -1048,7 +1048,7 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
* @return Explicit locks release future.
*/
public IgniteInternalFuture<?> finishExplicitLocks(AffinityTopologyVersion topVer) {
- GridCompoundFuture<Object, Object> res = new GridCompoundFuture<>();
+ GridCompoundFuture<Object, Object> res = new CacheObjectsReleaseFuture<>("ExplicitLock", topVer);
for (GridCacheExplicitLockSpan span : pendingExplicit.values()) {
AffinityTopologyVersion snapshot = span.topologyVersion();
@@ -1069,7 +1069,7 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
*/
@SuppressWarnings("unchecked")
public IgniteInternalFuture<?> finishAtomicUpdates(AffinityTopologyVersion topVer) {
- GridCompoundFuture<Object, Object> res = new FinishAtomicUpdateFuture();
+ GridCompoundFuture<Object, Object> res = new FinishAtomicUpdateFuture("AtomicUpdate", topVer);
for (GridCacheAtomicFuture<?> fut : atomicFuts.values()) {
IgniteInternalFuture<Void> complete = fut.completeFuture(topVer);
@@ -1088,11 +1088,13 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
* @return Finish update future.
*/
@SuppressWarnings("unchecked")
- public IgniteInternalFuture<?> finishDataStreamerUpdates() {
- GridCompoundFuture<Object, Object> res = new GridCompoundFuture<>();
+ public IgniteInternalFuture<?> finishDataStreamerUpdates(AffinityTopologyVersion topVer) {
+ GridCompoundFuture<Void, Object> res = new CacheObjectsReleaseFuture<>("DataStreamer", topVer);
- for (IgniteInternalFuture fut : dataStreamerFuts)
- res.add(fut);
+ for (DataStreamerFuture fut : dataStreamerFuts) {
+ if (fut.topVer.compareTo(topVer) < 0)
+ res.add(fut);
+ }
res.markInitialized();
@@ -1340,10 +1342,18 @@ public class GridCacheMvccManager extends GridCacheSharedManagerAdapter {
/**
* Finish atomic update future.
*/
- private static class FinishAtomicUpdateFuture extends GridCompoundFuture<Object, Object> {
+ private static class FinishAtomicUpdateFuture extends CacheObjectsReleaseFuture<Object, Object> {
/** */
private static final long serialVersionUID = 0L;
+ /**
+ * @param type Type.
+ * @param topVer Topology version.
+ */
+ private FinishAtomicUpdateFuture(String type, AffinityTopologyVersion topVer) {
+ super(type, topVer);
+ }
+
/** {@inheritDoc} */
@Override protected boolean ignoreFailure(Throwable err) {
Class cls = err.getClass();
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
index efd90a8..5387cc8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheSharedContext.java
@@ -809,12 +809,12 @@ public class GridCacheSharedContext<K, V> {
*/
@SuppressWarnings({"unchecked"})
public IgniteInternalFuture<?> partitionReleaseFuture(AffinityTopologyVersion topVer) {
- GridCompoundFuture f = new GridCompoundFuture();
+ GridCompoundFuture f = new CacheObjectsReleaseFuture("Partition", topVer);
f.add(mvcc().finishExplicitLocks(topVer));
f.add(tm().finishTxs(topVer));
f.add(mvcc().finishAtomicUpdates(topVer));
- f.add(mvcc().finishDataStreamerUpdates());
+ f.add(mvcc().finishDataStreamerUpdates(topVer));
f.markInitialized();
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/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 ea34f75..c4a4f83 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
@@ -35,6 +35,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.locks.ReadWriteLock;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.events.CacheEvent;
@@ -92,6 +93,7 @@ import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_LONG_OPERATIONS_DUMP_TIMEOUT_LIMIT;
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_PARTITION_RELEASE_FUTURE_DUMP_THRESHOLD;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_THREAD_DUMP_ON_EXCHANGE_TIMEOUT;
import static org.apache.ignite.IgniteSystemProperties.getBoolean;
import static org.apache.ignite.IgniteSystemProperties.getLong;
@@ -111,6 +113,10 @@ public class GridDhtPartitionsExchangeFuture extends GridDhtTopologyFutureAdapte
public static final String EXCHANGE_LOG = "org.apache.ignite.internal.exchange.time";
/** */
+ private static final int RELEASE_FUTURE_DUMP_THRESHOLD =
+ IgniteSystemProperties.getInteger(IGNITE_PARTITION_RELEASE_FUTURE_DUMP_THRESHOLD, 0);
+
+ /** */
@GridToStringExclude
private volatile DiscoCache discoCache;
@@ -623,9 +629,8 @@ public class GridDhtPartitionsExchangeFuture extends GridDhtTopologyFutureAdapte
/**
* @param crd Coordinator flag.
* @return Exchange type.
- * @throws IgniteCheckedException If failed.
*/
- private ExchangeType onClusterStateChangeRequest(boolean crd) throws IgniteCheckedException {
+ private ExchangeType onClusterStateChangeRequest(boolean crd) {
assert exchActions != null && !exchActions.empty() : this;
StateChangeRequest req = exchActions.stateChangeRequest();
@@ -894,14 +899,15 @@ public class GridDhtPartitionsExchangeFuture extends GridDhtTopologyFutureAdapte
IgniteInternalFuture fut = cctx.snapshot()
.tryStartLocalSnapshotOperation(discoEvt);
- if (fut != null)
+ if (fut != null) {
fut.get();
- long end = U.currentTimeMillis();
+ long end = U.currentTimeMillis();
- if (log.isInfoEnabled())
- log.info("Snapshot initialization completed [topVer=" + exchangeId().topologyVersion() +
- ", time=" + (end - start) + "ms]");
+ if (log.isInfoEnabled())
+ log.info("Snapshot initialization completed [topVer=" + exchangeId().topologyVersion() +
+ ", time=" + (end - start) + "ms]");
+ }
}
catch (IgniteCheckedException e) {
U.error(log, "Error while starting snapshot operation", e);
@@ -955,9 +961,15 @@ public class GridDhtPartitionsExchangeFuture extends GridDhtTopologyFutureAdapte
long waitEnd = U.currentTimeMillis();
- if (log.isInfoEnabled())
+ if (log.isInfoEnabled()) {
+ long waitTime = (waitEnd - waitStart);
+
+ String futInfo = RELEASE_FUTURE_DUMP_THRESHOLD > 0 && waitTime > RELEASE_FUTURE_DUMP_THRESHOLD ?
+ partReleaseFut.toString() : "NA";
+
log.info("Finished waiting for partition release future [topVer=" + exchangeId().topologyVersion() +
- ", waitTime=" + (waitEnd - waitStart) + "ms]");
+ ", waitTime=" + (waitEnd - waitStart) + "ms, futInfo=" + futInfo + "]");
+ }
IgniteInternalFuture<?> locksFut = cctx.mvcc().finishLocks(exchId.topologyVersion());
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index 880d9b9..91ce3ce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -938,11 +938,7 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
fut = finFut;
if (fut == null) {
- fut = new GridFutureAdapter<IgniteInternalTx>() {
- @Override public String toString() {
- return S.toString(GridFutureAdapter.class, this, "tx", IgniteTxAdapter.this);
- }
- };
+ fut = new TxFinishFuture(this);
finFut = fut;
}
@@ -2287,4 +2283,42 @@ public abstract class IgniteTxAdapter extends GridMetadataAwareAdapter implement
return S.toString(TxShadow.class, this);
}
}
+
+ /**
+ *
+ */
+ private static class TxFinishFuture extends GridFutureAdapter<IgniteInternalTx> {
+ /** */
+ @GridToStringInclude
+ private IgniteTxAdapter tx;
+
+ /** */
+ private volatile long completionTime;
+
+ /**
+ * @param tx Transaction being awaited.
+ */
+ private TxFinishFuture(IgniteTxAdapter tx) {
+ this.tx = tx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean onDone(@Nullable IgniteInternalTx res, @Nullable Throwable err) {
+ completionTime = U.currentTimeMillis();
+
+ return super.onDone(res, err);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ long ct = completionTime;
+
+ if (ct == 0)
+ ct = U.currentTimeMillis();
+
+ long duration = ct - tx.startTime();
+
+ return S.toString(TxFinishFuture.class, this, "duration", duration);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index 3a3b766..26a4a91 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -42,6 +42,7 @@ import org.apache.ignite.internal.managers.communication.GridIoPolicy;
import org.apache.ignite.internal.managers.communication.GridMessageListener;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.CacheObjectsReleaseFuture;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheEntryEx;
import org.apache.ignite.internal.processors.cache.GridCacheEntryRemovedException;
@@ -535,7 +536,9 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
*/
public IgniteInternalFuture<Boolean> finishTxs(AffinityTopologyVersion topVer) {
GridCompoundFuture<IgniteInternalTx, Boolean> res =
- new GridCompoundFuture<>(
+ new CacheObjectsReleaseFuture<>(
+ "Tx",
+ topVer,
new IgniteReducer<IgniteInternalTx, Boolean>() {
@Override public boolean collect(IgniteInternalTx e) {
return true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/a71691ae/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
index 3e08cd9..74a8f41 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
@@ -166,7 +166,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
* @return Collection of futures.
*/
@SuppressWarnings("unchecked")
- public synchronized final Collection<IgniteInternalFuture<T>> futures() {
+ public final synchronized Collection<IgniteInternalFuture<T>> futures() {
if (futs == null)
return Collections.emptyList();
@@ -249,7 +249,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
/**
* Clear futures.
*/
- protected synchronized final void clear() {
+ protected final synchronized void clear() {
futs = null;
}
@@ -338,7 +338,7 @@ public class GridCompoundFuture<T, R> extends GridFutureAdapter<R> implements Ig
/**
* @return {@code True} if has at least one future.
*/
- protected synchronized final boolean hasFutures() {
+ protected final synchronized boolean hasFutures() {
return futs != null;
}
[5/5] ignite git commit: Merge branch 'ignite-2.1.3' of
https://github.com/gridgain/apache-ignite
Posted by ag...@apache.org.
Merge branch 'ignite-2.1.3' of https://github.com/gridgain/apache-ignite
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cde3da44
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cde3da44
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cde3da44
Branch: refs/heads/master
Commit: cde3da448e297846e0ae5aca58a8f8f07fc407fc
Parents: e5f2d90 23f26af
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Wed Jul 19 12:13:01 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Jul 19 12:13:01 2017 +0300
----------------------------------------------------------------------
.../apache/ignite/IgniteSystemProperties.java | 20 +++
.../cache/CacheObjectsReleaseFuture.java | 60 +++++++++
.../cache/GridCacheExplicitLockSpan.java | 10 +-
.../processors/cache/GridCacheMvccManager.java | 24 +++-
.../cache/GridCacheSharedContext.java | 4 +-
...idNearAtomicAbstractSingleUpdateRequest.java | 9 +-
...GridNearAtomicSingleUpdateInvokeRequest.java | 6 +
.../atomic/GridNearAtomicUpdateResponse.java | 2 +-
.../GridDhtPartitionsExchangeFuture.java | 30 +++--
.../cache/transactions/IgniteTxAdapter.java | 44 ++++++-
.../cache/transactions/IgniteTxManager.java | 5 +-
.../service/GridServiceProcessor.java | 4 +-
.../processors/service/ServiceContextImpl.java | 2 +
.../util/future/GridCompoundFuture.java | 6 +-
.../util/tostring/GridToStringBuilder.java | 2 +-
.../spi/IgniteSpiOperationTimeoutHelper.java | 8 +-
.../communication/tcp/TcpCommunicationSpi.java | 131 ++++++++++++-------
.../ignite/spi/discovery/tcp/ServerImpl.java | 72 +++++++---
.../spi/discovery/tcp/TcpDiscoverySpi.java | 16 ++-
.../IgniteClientReconnectAbstractTest.java | 5 +
.../cache/GridCachePutAllFailoverSelfTest.java | 15 +++
.../cache/IgniteCachePutAllRestartTest.java | 15 +++
.../CacheGetInsideLockChangingTopologyTest.java | 5 +
.../GridCacheAbstractNodeRestartSelfTest.java | 12 +-
...niteBinaryMetadataUpdateNodeRestartTest.java | 10 ++
.../distributed/IgniteCacheGetRestartTest.java | 5 +
.../IgniteCacheNearRestartRollbackSelfTest.java | 15 +++
...teSynchronizationModesMultithreadedTest.java | 5 +
.../IgniteCachePutRetryAbstractSelfTest.java | 5 +
.../org/apache/ignite/spi/GridTcpForwarder.java | 26 ++++
.../tcp/TcpCommunicationSpiDropNodesTest.java | 15 +++
.../TcpCommunicationSpiFaultyClientTest.java | 20 ++-
.../IgniteCacheRestartTestSuite2.java | 2 +
33 files changed, 494 insertions(+), 116 deletions(-)
----------------------------------------------------------------------
[2/5] ignite git commit: Forcible node drop makes cluster unstable in
some cases. Disable forcible node drop by default.
Posted by ag...@apache.org.
Forcible node drop makes cluster unstable in some cases. Disable forcible node drop by default.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e46cf958
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e46cf958
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e46cf958
Branch: refs/heads/master
Commit: e46cf9582bb05c22a45b868c2c78ea7ed4818d62
Parents: a71691a
Author: Andrey V. Mashenkov <an...@gmail.com>
Authored: Tue Jul 18 15:49:00 2017 +0300
Committer: Andrey V. Mashenkov <an...@gmail.com>
Committed: Tue Jul 18 15:49:00 2017 +0300
----------------------------------------------------------------------
.../apache/ignite/IgniteSystemProperties.java | 6 ++
.../service/GridServiceProcessor.java | 4 +-
.../spi/IgniteSpiOperationTimeoutHelper.java | 8 +-
.../communication/tcp/TcpCommunicationSpi.java | 81 ++++++++++++++------
.../IgniteClientReconnectAbstractTest.java | 5 ++
...niteBinaryMetadataUpdateNodeRestartTest.java | 10 +++
.../IgniteCacheNearRestartRollbackSelfTest.java | 15 ++++
...teSynchronizationModesMultithreadedTest.java | 5 ++
.../org/apache/ignite/spi/GridTcpForwarder.java | 26 +++++++
.../tcp/TcpCommunicationSpiDropNodesTest.java | 15 ++++
.../TcpCommunicationSpiFaultyClientTest.java | 20 +++--
11 files changed, 160 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 616ac3f..5da7bd6 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -684,6 +684,12 @@ public final class IgniteSystemProperties {
"IGNITE_PARTITION_RELEASE_FUTURE_DUMP_THRESHOLD";
/**
+ * If this property is set, a node will forcible fail a remote node when it fails to establish a communication
+ * connection.
+ */
+ public static final String IGNITE_ENABLE_FORCIBLE_NODE_KILL = "IGNITE_ENABLE_FORCIBLE_NODE_KILL";
+
+ /**
* Enforces singleton.
*/
private IgniteSystemProperties() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index 23a29f8..db632ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@ -1528,7 +1528,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
private volatile AffinityTopologyVersion currTopVer = null;
/** {@inheritDoc} */
- @Override public void onEvent(DiscoveryEvent evt, final DiscoCache discoCache) {
+ @Override public void onEvent(final DiscoveryEvent evt, final DiscoCache discoCache) {
GridSpinBusyLock busyLock = GridServiceProcessor.this.busyLock;
if (busyLock == null || !busyLock.enterBusy())
@@ -1589,7 +1589,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
log.info("Service processor detected a topology change during " +
"assignments calculation (will abort current iteration and " +
"re-calculate on the newer version): " +
- "[topVer=" + topVer + ", newTopVer=" + currTopVer + ']');
+ "[topVer=" + topVer + ", newTopVer=" + currTopVer0 + ']');
return;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiOperationTimeoutHelper.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiOperationTimeoutHelper.java b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiOperationTimeoutHelper.java
index c685ea9..b2432ce 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiOperationTimeoutHelper.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiOperationTimeoutHelper.java
@@ -98,7 +98,9 @@ public class IgniteSpiOperationTimeoutHelper {
if (!failureDetectionTimeoutEnabled)
return false;
- return e instanceof IgniteSpiOperationTimeoutException || e instanceof SocketTimeoutException ||
- X.hasCause(e, IgniteSpiOperationTimeoutException.class, SocketException.class);
+ if (X.hasCause(e, IgniteSpiOperationTimeoutException.class, SocketTimeoutException.class, SocketException.class))
+ return true;
+
+ return (timeout - (U.currentTimeMillis() - lastOperStartTs) <= 0);
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/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 5aca2f9..af12d3b 100755
--- 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
@@ -23,6 +23,7 @@ import java.io.OutputStream;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
+import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -341,6 +342,10 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
/** */
private ConnectionPolicy connPlc;
+ /** */
+ private boolean enableForcibleNodeKill = IgniteSystemProperties
+ .getBoolean(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+
/** Server listener. */
private final GridNioServerListener<Message> srvLsnr =
new GridNioServerListenerAdapter<Message>() {
@@ -2663,8 +2668,13 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
}
}
}
- else
+ else {
U.sleep(200);
+
+ if (getSpiContext().node(node.id()) == null)
+ throw new ClusterTopologyCheckedException("Failed to send message " +
+ "(node left topology): " + node);
+ }
}
fut.onDone(client0);
@@ -3088,6 +3098,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
}
if (failureDetectionTimeoutEnabled() && (e instanceof HandshakeTimeoutException ||
+ X.hasCause(e, SocketException.class) ||
timeoutHelper.checkFailureTimeoutReached(e))) {
String msg = "Handshake timed out (failure detection timeout is reached) " +
@@ -3179,8 +3190,10 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
"[addr=" + addr + ", err=" + e.getMessage() + ']', e));
// Reconnect for the second time, if connection is not established.
- if (!failureDetThrReached && connectAttempts < 2 &&
- (e instanceof ConnectException || X.hasCause(e, ConnectException.class))) {
+ if (!failureDetThrReached && connectAttempts < 5 &&
+ (X.hasCause(e, ConnectException.class, HandshakeException.class, SocketTimeoutException.class))) {
+ U.sleep(200);
+
connectAttempts++;
continue;
@@ -3203,21 +3216,25 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
"operating system firewall is disabled on local and remote hosts) " +
"[addrs=" + addrs + ']');
- if (getSpiContext().node(node.id()) != null && (CU.clientNode(node) || !CU.clientNode(getLocalNode())) &&
- X.hasCause(errs, ConnectException.class, SocketTimeoutException.class, HandshakeTimeoutException.class,
- IgniteSpiOperationTimeoutException.class)) {
+ if (enableForcibleNodeKill) {
+ if (getSpiContext().node(node.id()) != null && (CU.clientNode(node) || !CU.clientNode(getLocalNode())) &&
+ X.hasCause(errs, ConnectException.class, HandshakeException.class,
+ SocketTimeoutException.class, HandshakeTimeoutException.class,
+ IgniteSpiOperationTimeoutException.class)) {
- U.error(log, "TcpCommunicationSpi failed to establish connection to node, node will be dropped from " +
- "cluster [" +
- "rmtNode=" + node + "]", errs);
+ U.error(log, "TcpCommunicationSpi failed to establish connection to node, node will be dropped from " +
+ "cluster [" +
+ "rmtNode=" + node + "]", errs);
- getSpiContext().failNode(node.id(), "TcpCommunicationSpi failed to establish connection to node [" +
- "rmtNode=" + node +
- ", errs=" + errs +
- ", connectErrs=" + Arrays.toString(errs.getSuppressed()) + ']');
+ getSpiContext().failNode(node.id(), "TcpCommunicationSpi failed to establish connection to node [" +
+ "rmtNode=" + node +
+ ", errs=" + errs +
+ ", connectErrs=" + Arrays.toString(errs.getSuppressed()) + ']');
+ }
}
- throw errs;
+ if (X.hasCause(errs, ConnectException.class, HandshakeException.class))
+ throw errs;
}
return client;
@@ -3269,7 +3286,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
sslHnd = new BlockingSslHandler(sslMeta.sslEngine(), ch, directBuf, ByteOrder.nativeOrder(), log);
if (!sslHnd.handshake())
- throw new IgniteCheckedException("SSL handshake is not completed.");
+ throw new HandshakeException("SSL handshake is not completed.");
ByteBuffer handBuff = sslHnd.applicationBuffer();
@@ -3279,7 +3296,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
int read = ch.read(buf);
if (read == -1)
- throw new IgniteCheckedException("Failed to read remote node ID (connection closed).");
+ throw new HandshakeException("Failed to read remote node ID (connection closed).");
buf.flip();
@@ -3295,7 +3312,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
int read = ch.read(buf);
if (read == -1)
- throw new IgniteCheckedException("Failed to read remote node ID (connection closed).");
+ throw new HandshakeException("Failed to read remote node ID (connection closed).");
i += read;
}
@@ -3304,7 +3321,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
UUID rmtNodeId0 = U.bytesToUuid(buf.array(), Message.DIRECT_TYPE_SIZE);
if (!rmtNodeId.equals(rmtNodeId0))
- throw new IgniteCheckedException("Remote node ID is not as expected [expected=" + rmtNodeId +
+ throw new HandshakeException("Remote node ID is not as expected [expected=" + rmtNodeId +
", rcvd=" + rmtNodeId0 + ']');
else if (log.isDebugEnabled())
log.debug("Received remote node ID: " + rmtNodeId0);
@@ -3391,7 +3408,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
int read = ch.read(buf);
if (read == -1)
- throw new IgniteCheckedException("Failed to read remote node recovery handshake " +
+ throw new HandshakeException("Failed to read remote node recovery handshake " +
"(connection closed).");
buf.flip();
@@ -3429,7 +3446,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
int read = ch.read(buf);
if (read == -1)
- throw new IgniteCheckedException("Failed to read remote node recovery handshake " +
+ throw new HandshakeException("Failed to read remote node recovery handshake " +
"(connection closed).");
i += read;
@@ -3471,8 +3488,9 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
// Ignoring whatever happened after timeout - reporting only timeout event.
if (!cancelled)
- throw new HandshakeTimeoutException("Failed to perform handshake due to timeout (consider increasing " +
- "'connectionTimeout' configuration property).");
+ throw new HandshakeTimeoutException(
+ new IgniteSpiOperationTimeoutException("Failed to perform handshake due to timeout " +
+ "(consider increasing 'connectionTimeout' configuration property)."));
}
return rcvCnt;
@@ -3662,18 +3680,31 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
}
/** Internal exception class for proper timeout handling. */
- private static class HandshakeTimeoutException extends IgniteCheckedException {
+ private static class HandshakeException extends IgniteCheckedException {
/** */
private static final long serialVersionUID = 0L;
/**
- * @param msg Message.
+ * @param msg Error message.
*/
- HandshakeTimeoutException(String msg) {
+ HandshakeException(String msg) {
super(msg);
}
}
+ /** Internal exception class for proper timeout handling. */
+ private static class HandshakeTimeoutException extends IgniteCheckedException {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /**
+ * @param cause Exception cause
+ */
+ HandshakeTimeoutException(IgniteSpiOperationTimeoutException cause) {
+ super(cause);
+ }
+ }
+
/**
* This worker takes responsibility to shut the server down when stopping,
* No other thread shall stop passed server.
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectAbstractTest.java
index 10fa6ad..fa9cc35 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectAbstractTest.java
@@ -33,6 +33,7 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteClientDisconnectedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.events.Event;
@@ -152,6 +153,8 @@ public abstract class IgniteClientReconnectAbstractTest extends GridCommonAbstra
@Override protected void beforeTestsStarted() throws Exception {
super.beforeTestsStarted();
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
int srvs = serverCount();
if (srvs > 0)
@@ -172,6 +175,8 @@ public abstract class IgniteClientReconnectAbstractTest extends GridCommonAbstra
@Override protected void afterTestsStopped() throws Exception {
super.afterTestsStopped();
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+
stopAllGrids();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteBinaryMetadataUpdateNodeRestartTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteBinaryMetadataUpdateNodeRestartTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteBinaryMetadataUpdateNodeRestartTest.java
index ee1b48e..420fdd8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteBinaryMetadataUpdateNodeRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteBinaryMetadataUpdateNodeRestartTest.java
@@ -26,6 +26,7 @@ import javax.cache.processor.MutableEntry;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheEntryProcessor;
import org.apache.ignite.cluster.ClusterTopologyException;
@@ -89,9 +90,18 @@ public class IgniteBinaryMetadataUpdateNodeRestartTest extends GridCommonAbstrac
}
/** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL,"true");
+ }
+
+ /** {@inheritDoc} */
@Override protected void afterTestsStopped() throws Exception {
stopAllGrids();
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+
super.afterTestsStopped();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
index 79f15ad..1a9e13a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheNearRestartRollbackSelfTest.java
@@ -31,6 +31,7 @@ import javax.cache.processor.EntryProcessorException;
import javax.cache.processor.MutableEntry;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheRebalanceMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
@@ -92,6 +93,20 @@ public class IgniteCacheNearRestartRollbackSelfTest extends GridCommonAbstractTe
return cfg;
}
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL,"true");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+ }
+
/**
* @param igniteInstanceName Ignite instance name.
* @return Cache configuration.
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
index d23e870..8e57387 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
@@ -32,6 +32,7 @@ import javax.cache.integration.CacheWriterException;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.cache.store.CacheStore;
import org.apache.ignite.cache.store.CacheStoreAdapter;
@@ -106,6 +107,8 @@ public class IgniteTxCacheWriteSynchronizationModesMultithreadedTest extends Gri
@Override protected void beforeTestsStarted() throws Exception {
super.beforeTestsStarted();
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL,"true");
+
startGrids(SRVS);
clientMode = true;
@@ -121,6 +124,8 @@ public class IgniteTxCacheWriteSynchronizationModesMultithreadedTest extends Gri
@Override protected void afterTestsStopped() throws Exception {
stopAllGrids();
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+
super.afterTestsStopped();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/spi/GridTcpForwarder.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/GridTcpForwarder.java b/modules/core/src/test/java/org/apache/ignite/spi/GridTcpForwarder.java
index d08321e..68d97c1 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/GridTcpForwarder.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/GridTcpForwarder.java
@@ -23,6 +23,7 @@ import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
+import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -85,6 +86,10 @@ public final class GridTcpForwarder implements AutoCloseable {
outputCon.getInputStream(), inputCon.getOutputStream()
);
+ //Force closing sibling if one of thread failed.
+ forwardThread1.setUncaughtExceptionHandler(new ForwarderExceptionHandler(forwardThread2));
+ forwardThread2.setUncaughtExceptionHandler(new ForwarderExceptionHandler(forwardThread1));
+
forwardThread1.start();
forwardThread2.start();
@@ -128,6 +133,25 @@ public final class GridTcpForwarder implements AutoCloseable {
}
/**
+ *
+ */
+ private static class ForwarderExceptionHandler implements Thread.UncaughtExceptionHandler {
+ /** */
+ private Thread siblingThread;
+
+ /** */
+ public ForwarderExceptionHandler(Thread siblingThread) {
+
+ this.siblingThread = siblingThread;
+ }
+
+ /** */
+ @Override public void uncaughtException(Thread t, Throwable e) {
+ siblingThread.interrupt();
+ }
+ }
+
+ /**
* Thread reads data from input stream and write to output stream.
*/
private class ForwardThread extends Thread {
@@ -166,6 +190,8 @@ public final class GridTcpForwarder implements AutoCloseable {
}
catch (IOException e) {
log.error("IOException while forwarding data [threadName=" + getName() + "]", e);
+
+ throw new IgniteException(e);
}
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiDropNodesTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiDropNodesTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiDropNodesTest.java
index ddebd40..e215a34 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiDropNodesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiDropNodesTest.java
@@ -25,6 +25,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.events.Event;
@@ -82,6 +83,20 @@ public class TcpCommunicationSpiDropNodesTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL,"true");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+ }
+
+ /** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
super.beforeTest();
http://git-wip-us.apache.org/repos/asf/ignite/blob/e46cf958/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiFaultyClientTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiFaultyClientTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiFaultyClientTest.java
index b4d6cbc..bead697 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiFaultyClientTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpiFaultyClientTest.java
@@ -18,18 +18,16 @@
package org.apache.ignite.spi.communication.tcp;
import java.io.IOException;
-import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
-import java.net.Socket;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.events.Event;
@@ -44,8 +42,6 @@ import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
-import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAbstractMessage;
-import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeFailedMessage;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -95,6 +91,20 @@ public class TcpCommunicationSpiFaultyClientTest extends GridCommonAbstractTest
}
/** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL,"true");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+ }
+
+ /** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
super.beforeTest();
[4/5] ignite git commit: Enable forcible node prop for failover tests.
Posted by ag...@apache.org.
Enable forcible node prop for failover tests.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/23f26af5
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/23f26af5
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/23f26af5
Branch: refs/heads/master
Commit: 23f26af5887782b8ac3946231f72c9d9f63e4f05
Parents: cf345b8
Author: Andrey V. Mashenkov <an...@gmail.com>
Authored: Tue Jul 18 20:36:20 2017 +0300
Committer: Andrey V. Mashenkov <an...@gmail.com>
Committed: Tue Jul 18 20:36:20 2017 +0300
----------------------------------------------------------------------
.../cache/GridCachePutAllFailoverSelfTest.java | 15 +++++++++++++++
.../cache/IgniteCachePutAllRestartTest.java | 15 +++++++++++++++
.../CacheGetInsideLockChangingTopologyTest.java | 5 +++++
.../GridCacheAbstractNodeRestartSelfTest.java | 12 +++++++++++-
.../cache/distributed/IgniteCacheGetRestartTest.java | 5 +++++
.../dht/IgniteCachePutRetryAbstractSelfTest.java | 5 +++++
.../testsuites/IgniteCacheRestartTestSuite2.java | 2 ++
7 files changed, 58 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
index 71eb767..19bef92 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCachePutAllFailoverSelfTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteCompute;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.compute.ComputeJobContext;
@@ -119,6 +120,20 @@ public class GridCachePutAllFailoverSelfTest extends GridCommonAbstractTest {
/** Test failover SPI. */
private MasterFailoverSpi failoverSpi = new MasterFailoverSpi((IgnitePredicate)workerNodesFilter);
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
+ super.beforeTestsStarted();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+ }
+
/**
* @throws Exception If failed.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
index b00b3c8..5adafb1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
@@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import javax.cache.CacheException;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -79,6 +80,20 @@ public class IgniteCachePutAllRestartTest extends GridCommonAbstractTest {
}
/** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
+ super.beforeTestsStarted();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+ }
+
+ /** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
stopAllGrids();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetInsideLockChangingTopologyTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetInsideLockChangingTopologyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetInsideLockChangingTopologyTest.java
index bb2a55d..6ec1440 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetInsideLockChangingTopologyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/CacheGetInsideLockChangingTopologyTest.java
@@ -28,6 +28,7 @@ import javax.cache.CacheException;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -118,6 +119,8 @@ public class CacheGetInsideLockChangingTopologyTest extends GridCommonAbstractTe
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
super.beforeTestsStarted();
startGridsMultiThreaded(SRVS);
@@ -149,6 +152,8 @@ public class CacheGetInsideLockChangingTopologyTest extends GridCommonAbstractTe
stopAllGrids();
super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
index 8d5a4aa..d849559 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/GridCacheAbstractNodeRestartSelfTest.java
@@ -33,6 +33,7 @@ import javax.cache.CacheException;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.IgniteTransactions;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheRebalanceMode;
@@ -161,7 +162,16 @@ public abstract class GridCacheAbstractNodeRestartSelfTest extends GridCommonAbs
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
- // No-op.
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
+ super.beforeTestsStarted();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
index fb57ecd..aa82b9a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
@@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -90,6 +91,8 @@ public class IgniteCacheGetRestartTest extends GridCommonAbstractTest {
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
super.beforeTestsStarted();
startGrids(SRVS);
@@ -108,6 +111,8 @@ public class IgniteCacheGetRestartTest extends GridCommonAbstractTest {
super.afterTestsStopped();
stopAllGrids();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
index e65bff4..0620f60 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCachePutRetryAbstractSelfTest.java
@@ -34,6 +34,7 @@ import javax.cache.processor.EntryProcessorResult;
import javax.cache.processor.MutableEntry;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheEntryProcessor;
import org.apache.ignite.cache.CachePartialUpdateException;
@@ -136,6 +137,8 @@ public abstract class IgniteCachePutRetryAbstractSelfTest extends GridCommonAbst
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
+ System.setProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL, "true");
+
super.beforeTestsStarted();
startGridsMultiThreaded(GRID_CNT);
@@ -146,6 +149,8 @@ public abstract class IgniteCachePutRetryAbstractSelfTest extends GridCommonAbst
super.afterTestsStopped();
stopAllGrids();
+
+ System.clearProperty(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/23f26af5/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
index 1901283..6a4c487 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheRestartTestSuite2.java
@@ -18,6 +18,8 @@
package org.apache.ignite.testsuites;
import junit.framework.TestSuite;
+import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.internal.IgniteProperties;
import org.apache.ignite.internal.processors.cache.GridCachePutAllFailoverSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicPutAllFailoverSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCachePutAllRestartTest;
[3/5] ignite git commit: Partial fix of IGNITE-5473: Introduce
troubleshooting logger
Posted by ag...@apache.org.
Partial fix of IGNITE-5473: Introduce troubleshooting logger
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cf345b81
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cf345b81
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cf345b81
Branch: refs/heads/master
Commit: cf345b81820fbbcb82e5fcb2283b43ea286a40b4
Parents: e46cf95
Author: Andrey V. Mashenkov <an...@gmail.com>
Authored: Tue Jul 18 15:50:03 2017 +0300
Committer: Andrey V. Mashenkov <an...@gmail.com>
Committed: Tue Jul 18 15:50:03 2017 +0300
----------------------------------------------------------------------
.../apache/ignite/IgniteSystemProperties.java | 7 ++
...idNearAtomicAbstractSingleUpdateRequest.java | 9 ++-
...GridNearAtomicSingleUpdateInvokeRequest.java | 6 ++
.../atomic/GridNearAtomicUpdateResponse.java | 2 +-
.../processors/service/ServiceContextImpl.java | 2 +
.../util/tostring/GridToStringBuilder.java | 2 +-
.../communication/tcp/TcpCommunicationSpi.java | 66 ++++++++++--------
.../ignite/spi/discovery/tcp/ServerImpl.java | 72 ++++++++++++++------
.../spi/discovery/tcp/TcpDiscoverySpi.java | 16 +++--
9 files changed, 123 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 5da7bd6..264fb4b 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -146,6 +146,13 @@ public final class IgniteSystemProperties {
public static final String IGNITE_QUIET = "IGNITE_QUIET";
/**
+ * Setting this option to {@code true} will enable troubleshooting logger.
+ * Troubleshooting logger makes logging more verbose without enabling debug mode
+ * to provide more detailed logs without performance penalty.
+ */
+ public static final String IGNITE_TROUBLESHOOTING_LOGGER = "IGNITE_TROUBLESHOOTING_LOGGER";
+
+ /**
* Setting to {@code true} enables writing sensitive information in {@code toString()} output.
*/
public static final String IGNITE_TO_STRING_INCLUDE_SENSITIVE = "IGNITE_TO_STRING_INCLUDE_SENSITIVE";
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractSingleUpdateRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractSingleUpdateRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractSingleUpdateRequest.java
index 7022561..45ccb0e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractSingleUpdateRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractSingleUpdateRequest.java
@@ -21,10 +21,10 @@ import java.io.Externalizable;
import java.util.UUID;
import javax.cache.expiry.ExpiryPolicy;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
-import org.apache.ignite.internal.GridDirectTransient;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheEntryPredicate;
import org.apache.ignite.internal.processors.cache.GridCacheOperation;
+import org.apache.ignite.internal.util.typedef.internal.S;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -100,4 +100,11 @@ public abstract class GridNearAtomicAbstractSingleUpdateRequest extends GridNear
@Nullable @Override public CacheEntryPredicate[] filter() {
return NO_FILTER;
}
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridNearAtomicAbstractSingleUpdateRequest.class, this,
+ "nodeId", nodeId, "futId", futId, "topVer", topVer,
+ "parent", super.toString());
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateInvokeRequest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateInvokeRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateInvokeRequest.java
index b1fb530..865d6f8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateInvokeRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicSingleUpdateInvokeRequest.java
@@ -34,6 +34,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.typedef.internal.CU;
+import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.plugin.extensions.communication.MessageCollectionItemType;
import org.apache.ignite.plugin.extensions.communication.MessageReader;
@@ -282,4 +283,9 @@ public class GridNearAtomicSingleUpdateInvokeRequest extends GridNearAtomicSingl
@Override public short directType() {
return 126;
}
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(GridNearAtomicSingleUpdateRequest.class, this, super.toString());
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
index 9492164..37fe824 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateResponse.java
@@ -536,6 +536,6 @@ public class GridNearAtomicUpdateResponse extends GridCacheIdMessage implements
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(GridNearAtomicUpdateResponse.class, this, "parent");
+ return S.toString(GridNearAtomicUpdateResponse.class, this, super.toString());
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
index 66061d5..490b598 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/ServiceContextImpl.java
@@ -23,6 +23,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.services.Service;
import org.apache.ignite.services.ServiceContext;
@@ -48,6 +49,7 @@ public class ServiceContextImpl implements ServiceContext {
private final String cacheName;
/** Affinity key. */
+ @GridToStringInclude
private final Object affKey;
/** Executor service. */
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/internal/util/tostring/GridToStringBuilder.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/tostring/GridToStringBuilder.java b/modules/core/src/main/java/org/apache/ignite/internal/util/tostring/GridToStringBuilder.java
index 0c49b51..8d578ac 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/tostring/GridToStringBuilder.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/tostring/GridToStringBuilder.java
@@ -87,7 +87,7 @@ public class GridToStringBuilder {
private static final ReadWriteLock rwLock = new ReentrantReadWriteLock();
/** Maximum number of collection (map) entries to print. */
- public static final int MAX_COL_SIZE = 100;
+ public static final int MAX_COL_SIZE = 200;
/** {@link IgniteSystemProperties#IGNITE_TO_STRING_INCLUDE_SENSITIVE} */
public static final boolean INCLUDE_SENSITIVE =
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/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 af12d3b..35d3032 100755
--- 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
@@ -346,6 +346,10 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
private boolean enableForcibleNodeKill = IgniteSystemProperties
.getBoolean(IgniteSystemProperties.IGNITE_ENABLE_FORCIBLE_NODE_KILL);
+ /** */
+ private boolean enableTroubleshootingLog = IgniteSystemProperties
+ .getBoolean(IgniteSystemProperties.IGNITE_TROUBLESHOOTING_LOGGER);
+
/** Server listener. */
private final GridNioServerListener<Message> srvLsnr =
new GridNioServerListenerAdapter<Message>() {
@@ -459,8 +463,8 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
final ClusterNode rmtNode = getSpiContext().node(sndId);
if (rmtNode == null) {
- if (log.isDebugEnabled())
- log.debug("Close incoming connection, unknown node: " + sndId);
+ U.warn(log, "Close incoming connection, unknown node [nodeId=" + sndId +
+ ", ses=" + ses + ']');
ses.close();
@@ -523,10 +527,10 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
if (oldClient != null) {
if (oldClient instanceof GridTcpNioCommunicationClient) {
- if (log.isDebugEnabled())
- log.debug("Received incoming connection when already connected " +
- "to this node, rejecting [locNode=" + locNode.id() +
- ", rmtNode=" + sndId + ']');
+ if (log.isInfoEnabled())
+ log.info("Received incoming connection when already connected " +
+ "to this node, rejecting [locNode=" + locNode.id() +
+ ", rmtNode=" + sndId + ']');
ses.send(new RecoveryLastReceivedMessage(ALREADY_CONNECTED));
@@ -555,10 +559,10 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
if (oldClient instanceof GridTcpNioCommunicationClient) {
assert oldClient.connectionIndex() == connKey.connectionIndex() : oldClient;
- if (log.isDebugEnabled())
- log.debug("Received incoming connection when already connected " +
- "to this node, rejecting [locNode=" + locNode.id() +
- ", rmtNode=" + sndId + ']');
+ if (log.isInfoEnabled())
+ log.info("Received incoming connection when already connected " +
+ "to this node, rejecting [locNode=" + locNode.id() +
+ ", rmtNode=" + sndId + ']');
ses.send(new RecoveryLastReceivedMessage(ALREADY_CONNECTED));
@@ -578,7 +582,7 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
if (log.isDebugEnabled())
log.debug("Received incoming connection from remote node " +
- "[rmtNode=" + rmtNode.id() + ", reserved=" + reserved +
+ "[rmtNode=" + rmtNode.id() + ", reserved=" + reserved +
", recovery=" + recoveryDesc + ']');
if (reserved) {
@@ -595,11 +599,11 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
}
else {
if (oldFut instanceof ConnectFuture && locNode.order() < rmtNode.order()) {
- if (log.isDebugEnabled()) {
- log.debug("Received incoming connection from remote node while " +
- "connecting to this node, rejecting [locNode=" + locNode.id() +
- ", locNodeOrder=" + locNode.order() + ", rmtNode=" + rmtNode.id() +
- ", rmtNodeOrder=" + rmtNode.order() + ']');
+ if (log.isInfoEnabled()) {
+ log.info("Received incoming connection from remote node while " +
+ "connecting to this node, rejecting [locNode=" + locNode.id() +
+ ", locNodeOrder=" + locNode.order() + ", rmtNode=" + rmtNode.id() +
+ ", rmtNodeOrder=" + rmtNode.order() + ']');
}
ses.send(new RecoveryLastReceivedMessage(ALREADY_CONNECTED));
@@ -3131,11 +3135,11 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
", addr=" + addr + ", err=" + e + ']');
if (attempt == reconCnt || connTimeout0 > maxConnTimeout) {
- if (log.isDebugEnabled())
- log.debug("Handshake timedout (will stop attempts to perform the handshake) " +
- "[timeout=" + connTimeout0 + ", maxConnTimeout=" + maxConnTimeout +
- ", attempt=" + attempt + ", reconCnt=" + reconCnt +
- ", err=" + e.getMessage() + ", addr=" + addr + ']');
+ U.warn(log, "Handshake timedout (will stop attempts to perform the handshake) " +
+ "[node=" + node.id() + ", timeout=" + connTimeout0 +
+ ", maxConnTimeout=" + maxConnTimeout +
+ ", attempt=" + attempt + ", reconCnt=" + reconCnt +
+ ", err=" + e.getMessage() + ", addr=" + addr + ']');
if (errs == null)
errs = new IgniteCheckedException("Failed to connect to node (is node still alive?). " +
@@ -3172,6 +3176,11 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
boolean failureDetThrReached = timeoutHelper.checkFailureTimeoutReached(e);
+ if (enableTroubleshootingLog)
+ U.error(log, "Failed to establish connection to a remote node [node=" + node +
+ ", addr=" + addr + ", connectAttempts=" + connectAttempts +
+ ", failureDetThrReached=" + failureDetThrReached + ']', e);
+
if (failureDetThrReached)
LT.warn(log, "Connect timed out (consider increasing 'failureDetectionTimeout' " +
"configuration property) [addr=" + addr + ", failureDetectionTimeout=" +
@@ -3216,15 +3225,14 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter implements Communicati
"operating system firewall is disabled on local and remote hosts) " +
"[addrs=" + addrs + ']');
- if (enableForcibleNodeKill) {
- if (getSpiContext().node(node.id()) != null && (CU.clientNode(node) || !CU.clientNode(getLocalNode())) &&
- X.hasCause(errs, ConnectException.class, HandshakeException.class,
- SocketTimeoutException.class, HandshakeTimeoutException.class,
- IgniteSpiOperationTimeoutException.class)) {
+ if (enableForcibleNodeKill) {if (getSpiContext().node(node.id()) != null && (CU.clientNode(node) || !CU.clientNode(getLocalNode())) &&
+ X.hasCause(errs, ConnectException.class,HandshakeException.class, SocketTimeoutException.class, HandshakeTimeoutException.class,
+ IgniteSpiOperationTimeoutException.class)) {String msg = "TcpCommunicationSpi failed to establish connection to node, node will be dropped from " +
+ "cluster [" + "rmtNode=" + node + ']';
- U.error(log, "TcpCommunicationSpi failed to establish connection to node, node will be dropped from " +
- "cluster [" +
- "rmtNode=" + node + "]", errs);
+ if(enableTroubleshootingLog)U.error(log, msg, errs);
+ else
+ U.warn(log, msg);
getSpiContext().failNode(node.id(), "TcpCommunicationSpi failed to establish connection to node [" +
"rmtNode=" + node +
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index d75aae9..d621fb3 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@ -521,9 +521,6 @@ class ServerImpl extends TcpDiscoveryImpl {
@Override public boolean pingNode(UUID nodeId) {
assert nodeId != null;
- if (log.isDebugEnabled())
- log.debug("Pinging node: " + nodeId + "]");
-
if (nodeId == getLocalNodeId())
return true;
@@ -535,8 +532,18 @@ class ServerImpl extends TcpDiscoveryImpl {
if (!nodeAlive(nodeId))
return false;
+ long start = U.currentTimeMillis();
+
+ if (log.isInfoEnabled())
+ log.info("Pinging node: " + nodeId);
+
boolean res = pingNode(node);
+ long end = System.currentTimeMillis();
+
+ if (log.isInfoEnabled())
+ log.info("Finished node ping [nodeId=" + nodeId + ", res=" + res + ", time=" + (end - start) + "ms]");
+
if (!res && !node.isClient() && nodeAlive(nodeId)) {
LT.warn(log, "Failed to ping node (status check will be initiated): " + nodeId);
@@ -1698,9 +1705,9 @@ class ServerImpl extends TcpDiscoveryImpl {
assert log.isInfoEnabled();
- synchronized (mux) {
- StringBuilder b = new StringBuilder(U.nl());
+ StringBuilder b = new StringBuilder(U.nl());
+ synchronized (mux) {
b.append(">>>").append(U.nl());
b.append(">>>").append("Dumping discovery SPI debug info.").append(U.nl());
b.append(">>>").append(U.nl());
@@ -1747,9 +1754,9 @@ class ServerImpl extends TcpDiscoveryImpl {
b.append(U.nl());
b.append("Stats: ").append(spi.stats).append(U.nl());
-
- U.quietAndInfo(log, b.toString());
}
+
+ U.quietAndInfo(log, b.toString());
}
/**
@@ -3137,12 +3144,8 @@ class ServerImpl extends TcpDiscoveryImpl {
// If node existed on connection initialization we should check
// whether it has not gone yet.
- if (nextNodeExists)
- U.warn(log, "Failed to send message to next node [msg=" + msg + ", next=" + next +
- ", errMsg=" + (err != null ? err.getMessage() : "N/A") + ']');
- else if (log.isDebugEnabled())
- log.debug("Failed to send message to next node [msg=" + msg + ", next=" + next +
- ", errMsg=" + (err != null ? err.getMessage() : "N/A") + ']');
+ U.warn(log, "Failed to send message to next node [msg=" + msg + ", next=" + next +
+ ", errMsg=" + (err != null ? err.getMessage() : "N/A") + ']');
}
}
@@ -3324,6 +3327,8 @@ class ServerImpl extends TcpDiscoveryImpl {
if (existingNode != null) {
if (!node.socketAddresses().equals(existingNode.socketAddresses())) {
if (!pingNode(existingNode)) {
+ U.warn(log, "Sending node failed message for existing node: " + node);
+
addMessage(new TcpDiscoveryNodeFailedMessage(locNodeId,
existingNode.id(), existingNode.internalOrder()));
@@ -5373,8 +5378,7 @@ class ServerImpl extends TcpDiscoveryImpl {
if (msgs != null) {
for (TcpDiscoveryNodeFailedMessage msg : msgs) {
- if (log.isDebugEnabled())
- log.debug("Add node failed message for node from failed nodes list: " + msg);
+ U.warn(log, "Added node failed message for node from failed nodes list: " + msg);
addMessage(msg);
}
@@ -5593,8 +5597,9 @@ class ServerImpl extends TcpDiscoveryImpl {
long tstamp = U.currentTimeMillis();
- if (log.isDebugEnabled())
- log.debug("Accepted incoming connection from addr: " + sock.getInetAddress());
+ if (log.isInfoEnabled())
+ log.info("TCP discovery accepted incoming connection " +
+ "[rmtAddr=" + sock.getInetAddress() + ", rmtPort=" + sock.getPort() + ']');
SocketReader reader = new SocketReader(sock);
@@ -5602,6 +5607,10 @@ class ServerImpl extends TcpDiscoveryImpl {
readers.add(reader);
}
+ if (log.isInfoEnabled())
+ log.info("TCP discovery spawning a new thread for connection " +
+ "[rmtAddr=" + sock.getInetAddress() + ", rmtPort=" + sock.getPort() + ']');
+
reader.start();
spi.stats.onServerSocketInitialized(U.currentTimeMillis() - tstamp);
@@ -5664,6 +5673,12 @@ class ServerImpl extends TcpDiscoveryImpl {
ClientMessageWorker clientMsgWrk = null;
+ SocketAddress rmtAddr = sock.getRemoteSocketAddress();
+
+ if (log.isInfoEnabled())
+ log.info("Started serving remote node connection [rmtAddr=" + rmtAddr +
+ ", rmtPort=" + sock.getPort() + ']');
+
boolean srvSock;
try {
@@ -5696,11 +5711,11 @@ class ServerImpl extends TcpDiscoveryImpl {
else {
if (log.isDebugEnabled())
log.debug("Failed to read magic header (too few bytes received) " +
- "[rmtAddr=" + sock.getRemoteSocketAddress() +
+ "[rmtAddr=" + rmtAddr +
", locAddr=" + sock.getLocalSocketAddress() + ']');
LT.warn(log, "Failed to read magic header (too few bytes received) [rmtAddr=" +
- sock.getRemoteSocketAddress() + ", locAddr=" + sock.getLocalSocketAddress() + ']');
+ rmtAddr + ", locAddr=" + sock.getLocalSocketAddress() + ']');
return;
}
@@ -5712,7 +5727,7 @@ class ServerImpl extends TcpDiscoveryImpl {
"this Ignite port?" +
(!spi.isSslEnabled() ? " missed SSL configuration?" : "" ) +
") " +
- "[rmtAddr=" + sock.getRemoteSocketAddress() +
+ "[rmtAddr=" + rmtAddr +
", locAddr=" + sock.getLocalSocketAddress() + ']');
LT.warn(log, "Unknown connection detected (is some other software connecting to " +
@@ -5733,6 +5748,11 @@ class ServerImpl extends TcpDiscoveryImpl {
if (!spi.isNodeStopping0()) {
TcpDiscoveryPingRequest req = (TcpDiscoveryPingRequest)msg;
+ if (log.isInfoEnabled())
+ log.info("Received ping request from the remote node " +
+ "[rmtNodeId=" + msg.creatorNodeId() +
+ ", rmtAddr=" + rmtAddr + ", rmtPort=" + sock.getPort() + "]");
+
TcpDiscoveryPingResponse res = new TcpDiscoveryPingResponse(locNodeId);
IgniteSpiOperationTimeoutHelper timeoutHelper =
@@ -5746,6 +5766,12 @@ class ServerImpl extends TcpDiscoveryImpl {
}
spi.writeToSocket(sock, res, timeoutHelper.nextTimeoutChunk(spi.getSocketTimeout()));
+
+ sock.shutdownOutput();
+
+ if (log.isInfoEnabled())
+ log.info("Finished writing ping response " + "[rmtNodeId=" + msg.creatorNodeId() +
+ ", rmtAddr=" + rmtAddr + ", rmtPort=" + sock.getPort() + "]");
}
else if (log.isDebugEnabled())
log.debug("Ignore ping request, node is stopping.");
@@ -5872,7 +5898,7 @@ class ServerImpl extends TcpDiscoveryImpl {
else if (e.hasCause(ClassNotFoundException.class))
LT.warn(log, "Failed to read message due to ClassNotFoundException " +
"(make sure same versions of all classes are available on all nodes) " +
- "[rmtAddr=" + sock.getRemoteSocketAddress() +
+ "[rmtAddr=" + rmtAddr +
", err=" + X.cause(e, ClassNotFoundException.class).getMessage() + ']');
// Always report marshalling problems.
@@ -6162,6 +6188,10 @@ class ServerImpl extends TcpDiscoveryImpl {
}
U.closeQuiet(sock);
+
+ if (log.isInfoEnabled())
+ log.info("Finished serving remote node connection [rmtAddr=" + rmtAddr +
+ ", rmtPort=" + sock.getPort());
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/cf345b81/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 371f308..c988d7e 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
@@ -1585,7 +1585,8 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements DiscoverySpi {
catch (IOException | IgniteCheckedException e) {
if (X.hasCause(e, SocketTimeoutException.class))
LT.warn(log, "Timed out waiting for message to be read (most probably, the reason is " +
- "in long GC pauses on remote node) [curTimeout=" + timeout + ']');
+ "long GC pauses on remote node) [curTimeout=" + timeout +
+ ", rmtAddr=" + sock.getRemoteSocketAddress() + ", rmtPort=" + sock.getPort() + ']');
throw e;
}
@@ -1626,8 +1627,9 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements DiscoverySpi {
catch (SocketTimeoutException e) {
LT.warn(log, "Timed out waiting for message delivery receipt (most probably, the reason is " +
"in long GC pauses on remote node; consider tuning GC and increasing 'ackTimeout' " +
- "configuration property). Will retry to send message with increased timeout. " +
- "Current timeout: " + timeout + '.');
+ "configuration property). Will retry to send message with increased timeout " +
+ "[currentTimeout=" + timeout + ", rmtAddr=" + sock.getRemoteSocketAddress() +
+ ", rmtPort=" + sock.getPort() + ']');
stats.onAckTimeout();
@@ -2164,9 +2166,11 @@ public class TcpDiscoverySpi extends IgniteSpiAdapter implements DiscoverySpi {
LT.warn(log, "Socket write has timed out (consider increasing " +
(failureDetectionTimeoutEnabled() ?
- "'IgniteConfiguration.failureDetectionTimeout' configuration property) [" +
- "failureDetectionTimeout=" + failureDetectionTimeout() + ']' :
- "'sockTimeout' configuration property) [sockTimeout=" + sockTimeout + ']'));
+ "'IgniteConfiguration.failureDetectionTimeout' configuration property) [" +
+ "failureDetectionTimeout=" + failureDetectionTimeout() :
+ "'sockTimeout' configuration property) [sockTimeout=" + sockTimeout) +
+ ", rmtAddr=" + sock.getRemoteSocketAddress() + ", rmtPort=" + sock.getPort() +
+ ", sockTimeout=" + sockTimeout + ']');
stats.onSocketTimeout();
}