ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sboi...@apache.org
Subject [06/19] ignite git commit: IGNITE-5155
Date Sat, 10 Jun 2017 06:20:37 GMT
IGNITE-5155


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

Branch: refs/heads/ignite-5155
Commit: 68c27b38140abe7ab5ac9106e4fb87b84114a4f4
Parents: 16b6d1b
Author: Igor Seliverstov <gvvinblade@gmail.com>
Authored: Thu Jun 8 17:07:32 2017 +0300
Committer: Igor Seliverstov <gvvinblade@gmail.com>
Committed: Thu Jun 8 17:07:32 2017 +0300

----------------------------------------------------------------------
 .../ignite/internal/IgniteDiagnosticAware.java  |   2 +-
 .../internal/IgniteDiagnosticMessage.java       | 118 ++++++++++++++++++-
 .../GridCachePartitionExchangeManager.java      |  32 +++--
 .../distributed/dht/GridDhtTxPrepareFuture.java |   5 +-
 .../dht/GridPartitionedSingleGetFuture.java     |   8 +-
 .../colocated/GridDhtColocatedLockFuture.java   |   5 +-
 .../GridDhtPartitionsExchangeFuture.java        |   7 +-
 .../processors/cluster/ClusterProcessor.java    |   2 +-
 8 files changed, 155 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticAware.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticAware.java
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticAware.java
index 6f724af..a37d924 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticAware.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticAware.java
@@ -21,5 +21,5 @@ package org.apache.ignite.internal;
  *
  */
 public interface IgniteDiagnosticAware {
-    public void prepareRequest();
+    public void prepareRequest(IgniteDiagnosticMessage.PreparedRequest context);
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
index 180d394..f6a158b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteDiagnosticMessage.java
@@ -25,11 +25,14 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
+import java.util.TreeMap;
 import java.util.UUID;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.internal.managers.communication.GridIoMessageFactory;
@@ -42,14 +45,17 @@ import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTopolo
 import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture;
 import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.util.future.GridCompoundFuture;
 import org.apache.ignite.internal.util.future.GridFinishedFuture;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.lang.IgniteReducer;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.plugin.extensions.communication.MessageReader;
 import org.apache.ignite.plugin.extensions.communication.MessageWriter;
 import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
+import org.jetbrains.annotations.Nullable;
 
 /**
  *
@@ -491,6 +497,8 @@ public class IgniteDiagnosticMessage implements Message {
         /** */
         private Set<BaseClosure> cls = new HashSet<>();
 
+        private transient Map<Integer, StringBuilder> msgs = new TreeMap<>();
+
         /**
          * @param nodeId Local node ID.
          */
@@ -505,8 +513,27 @@ public class IgniteDiagnosticMessage implements Message {
             return nodeId;
         }
 
-        public <T extends BaseClosure> void add(T cl) {
-            assert cl != null && cl.nodeId == nodeId;
+        public String message() {
+            if(msgs.isEmpty())
+                return "";
+
+            StringBuilder sb = new StringBuilder();
+
+            for (StringBuilder b : msgs.values())
+                sb.append(b);
+
+            return sb.toString();
+        }
+
+        public <T extends BaseClosure> void add(String msg, T cl) {
+            assert cl == null || cl.nodeId == nodeId;
+
+            if(msg != null && !msg.isEmpty()) {
+                addMessage(messageType(cl), msg);
+            }
+
+            if (cl == null)
+                return;
 
             if(!cls.add(cl) && cl.getClass() == TxEntriesInfoClosure.class) {
                 // The entry with the same cache id is already exist, need to merge its keys.
@@ -522,6 +549,22 @@ public class IgniteDiagnosticMessage implements Message {
             }
         }
 
+        private <T extends BaseClosure> int messageType(T cl) {
+            return TypeComparator.INSTANCE.order(cl);
+        }
+
+        private void addMessage(int msgType, String msg) {
+            StringBuilder sb = msgs.get(msgType);
+
+            if(sb == null)
+                msgs.put(msgType, sb = new StringBuilder());
+
+            if(sb.length() != 0)
+                sb.append(U.nl());
+
+            sb.append(msg);
+        }
+
         /**
          * @param cl Closure.
          * @return Existed closure.
@@ -561,6 +604,77 @@ public class IgniteDiagnosticMessage implements Message {
         }
     }
 
+    public static class PreparedRequest {
+        final UUID localNodeId;
+
+        final Map<UUID, CompoundInfoClosure> cls = new HashMap<>();
+
+        public PreparedRequest(UUID id) {
+            localNodeId = id;
+        }
+
+        public void exchangeInfo(UUID nodeId, AffinityTopologyVersion topVer, String msg)
{
+            closure(nodeId).add(msg, new ExchangeInfoClosure(localNodeId, topVer));
+        }
+
+        public void txKeyInfo(UUID nodeId, int cacheId, Collection<KeyCacheObject>
keys, String msg) {
+            closure(nodeId).add(msg, new TxEntriesInfoClosure(localNodeId, cacheId, keys));
+        }
+
+        public void remoteTxInfo(UUID nodeId, GridCacheVersion dhtVer, GridCacheVersion nearVer,
String msg) {
+            closure(nodeId).add(msg, new TxInfoClosure(localNodeId, dhtVer, nearVer));
+        }
+
+        public void basicInfo(final UUID nodeId, final String msg) {
+            closure(nodeId).add(msg, null);
+        }
+
+        public IgniteInternalFuture<String> send(GridKernalContext ctx) {
+            IgniteReducer<String, String> reducer = new IgniteReducer<String, String>()
{
+                private final StringBuilder sb = new StringBuilder();
+
+                @Override public boolean collect(@Nullable String s) {
+                    if(s != null)
+                        synchronized (sb) {
+                            sb.append(s);
+                        }
+
+                    return true;
+                }
+
+                @Override public String reduce() {
+                    synchronized (sb) {
+                        return sb.toString();
+                    }
+                }
+            };
+
+            GridCompoundFuture<String, String> fut = new GridCompoundFuture<>(reducer);
+
+            for (Map.Entry<UUID, CompoundInfoClosure> entry : cls.entrySet()) {
+                UUID rmtNodeId = entry.getKey();
+                CompoundInfoClosure c = entry.getValue();
+
+                fut.add(ctx.cluster().diagnosticInfo(rmtNodeId, c, c.message()));
+            }
+
+            fut.markInitialized();
+
+            return fut;
+        }
+
+        private CompoundInfoClosure closure(UUID nodeId) {
+            CompoundInfoClosure cl = cls.get(nodeId);
+
+            if(cl == null)
+                cls.put(nodeId, cl = new CompoundInfoClosure(localNodeId));
+
+            return cl;
+        }
+
+
+    }
+
     /**
      *
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
index 0f0dcd3..a9307a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java
@@ -50,6 +50,7 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.events.DiscoveryEvent;
 import org.apache.ignite.internal.IgniteClientDisconnectedCheckedException;
 import org.apache.ignite.internal.IgniteDiagnosticAware;
+import org.apache.ignite.internal.IgniteDiagnosticMessage;
 import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
@@ -1385,6 +1386,8 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana
                 U.warn(diagnosticLog, ">>> " + fut);
         }
 
+        IgniteDiagnosticMessage.PreparedRequest req = new IgniteDiagnosticMessage.PreparedRequest(cctx.localNodeId());
+
         ExchangeFutureSet exchFuts = this.exchFuts;
 
         if (exchFuts != null) {
@@ -1395,14 +1398,21 @@ public class GridCachePartitionExchangeManager<K, V> extends
GridCacheSharedMana
             for (GridDhtPartitionsExchangeFuture fut : exchFuts.values()) {
                 U.warn(diagnosticLog, ">>> " + fut.shortInfo());
 
-                fut.prepareRequest();
+                fut.prepareRequest(req);
 
                 if (++cnt == 10)
                     break;
             }
         }
 
-        dumpPendingObjects(exchTopVer);
+        dumpPendingObjects(exchTopVer, req);
+
+        try {
+            U.warn(diagnosticLog, req.send(cctx.kernalContext()).get(2 * cctx.gridConfig().getNetworkTimeout()));
+        }
+        catch (IgniteCheckedException e) {
+            U.error(diagnosticLog, "Failed to dump remote diagnostic info: " + e, e);
+        }
 
         for (CacheGroupContext grp : cctx.cache().cacheGroups())
             grp.preloader().dumpDebugInfo();
@@ -1527,8 +1537,10 @@ public class GridCachePartitionExchangeManager<K, V> extends
GridCacheSharedMana
 
     /**
      * @param exchTopVer Exchange topology version.
+     * @param req
      */
-    private void dumpPendingObjects(@Nullable AffinityTopologyVersion exchTopVer) {
+    private void dumpPendingObjects(@Nullable AffinityTopologyVersion exchTopVer,
+        IgniteDiagnosticMessage.PreparedRequest req) {
         IgniteTxManager tm = cctx.tm();
 
         if (tm != null) {
@@ -1556,23 +1568,23 @@ public class GridCachePartitionExchangeManager<K, V> extends
GridCacheSharedMana
             U.warn(diagnosticLog, "Pending cache futures:");
 
             for (GridCacheFuture<?> fut : mvcc.activeFutures())
-                dumpDiagnosticInfo(fut);
+                dumpDiagnosticInfo(fut, req);
 
             U.warn(diagnosticLog, "Pending atomic cache futures:");
 
             for (GridCacheFuture<?> fut : mvcc.atomicFutures())
-                dumpDiagnosticInfo(fut);
+                dumpDiagnosticInfo(fut, req);
 
             U.warn(diagnosticLog, "Pending data streamer futures:");
 
             for (IgniteInternalFuture<?> fut : mvcc.dataStreamerFutures())
-                dumpDiagnosticInfo(fut);
+                dumpDiagnosticInfo(fut, req);
 
             if (tm != null) {
                 U.warn(diagnosticLog, "Pending transaction deadlock detection futures:");
 
                 for (IgniteInternalFuture<?> fut : tm.deadlockDetectionFutures())
-                    dumpDiagnosticInfo(fut);
+                    dumpDiagnosticInfo(fut, req);
             }
         }
 
@@ -1595,12 +1607,14 @@ public class GridCachePartitionExchangeManager<K, V> extends
GridCacheSharedMana
     /**
      * Logs the future and dumps diagnostic info if needed.
      * @param fut Future.
+     * @param req
      */
-    private void dumpDiagnosticInfo(IgniteInternalFuture<?> fut) {
+    private void dumpDiagnosticInfo(IgniteInternalFuture<?> fut,
+        IgniteDiagnosticMessage.PreparedRequest req) {
         U.warn(diagnosticLog, ">>> " + fut);
 
         if (fut instanceof IgniteDiagnosticAware)
-            ((IgniteDiagnosticAware)fut).prepareRequest();
+            ((IgniteDiagnosticAware)fut).prepareRequest(req);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
index 832b33b..5f77716 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxPrepareFuture.java
@@ -37,6 +37,7 @@ import org.apache.ignite.IgniteInterruptedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.internal.IgniteDiagnosticAware;
+import org.apache.ignite.internal.IgniteDiagnosticMessage;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
 import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -1568,7 +1569,7 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
     }
 
     /** {@inheritDoc} */
-    @Override public void prepareRequest() {
+    @Override public void prepareRequest(IgniteDiagnosticMessage.PreparedRequest context)
{
         if (!isDone()) {
             for (IgniteInternalFuture fut : futures()) {
                 if (!fut.isDone() && fut instanceof MiniFuture) {
@@ -1578,7 +1579,7 @@ public final class GridDhtTxPrepareFuture extends GridCacheCompoundFuture<Ignite
                         GridCacheVersion dhtVer = tx.xidVersion();
                         GridCacheVersion nearVer = tx.nearXidVersion();
 
-                        cctx.kernalContext().cluster().dumpRemoteTxInfo(f.nodeId, dhtVer,
nearVer, "GridDhtTxPrepareFuture " +
+                        context.remoteTxInfo(f.nodeId, dhtVer, nearVer, "GridDhtTxPrepareFuture
" +
                             "waiting for response [node=" + f.nodeId +
                             ", topVer=" + tx.topologyVersion() +
                             ", dhtVer=" + dhtVer +

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
index a0db3e7..17ca659 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridPartitionedSingleGetFuture.java
@@ -27,6 +27,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.internal.IgniteDiagnosticAware;
+import org.apache.ignite.internal.IgniteDiagnosticMessage;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
 import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
@@ -768,7 +769,7 @@ public class GridPartitionedSingleGetFuture extends GridCacheFutureAdapter<Objec
     }
 
     /** {@inheritDoc} */
-    @Override public void prepareRequest() {
+    @Override public void prepareRequest(IgniteDiagnosticMessage.PreparedRequest context)
{
         if (!isDone()) {
             UUID nodeId;
             AffinityTopologyVersion topVer;
@@ -779,12 +780,11 @@ public class GridPartitionedSingleGetFuture extends GridCacheFutureAdapter<Objec
             }
 
             if (nodeId != null)
-                cctx.kernalContext().cluster().dumpBasicInfo(nodeId, "GridPartitionedSingleGetFuture
waiting for " +
+                context.basicInfo(nodeId, "GridPartitionedSingleGetFuture waiting for " +
                     "response [node=" + nodeId +
                     ", key=" + key +
                     ", futId=" + futId +
-                    ", topVer=" + topVer + ']',
-                    null);
+                    ", topVer=" + topVer + ']');
         }
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index ecbf177..a55888f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -31,6 +31,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.internal.IgniteDiagnosticAware;
+import org.apache.ignite.internal.IgniteDiagnosticMessage;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
 import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
@@ -597,7 +598,7 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF
     }
 
     /** {@inheritDoc} */
-    @Override public void prepareRequest() {
+    @Override public void prepareRequest(IgniteDiagnosticMessage.PreparedRequest context)
{
         if (!isDone()) {
             for (IgniteInternalFuture fut : futures()) {
                 if (!fut.isDone() && isMini(fut)) {
@@ -615,7 +616,7 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF
                     }
 
                     if (rmtNodeId != null) {
-                        cctx.kernalContext().cluster().dumpTxKeyInfo(rmtNodeId, cctx.cacheId(),
m.keys,
+                        context.txKeyInfo(rmtNodeId, cctx.cacheId(), m.keys,
                             "GridDhtColocatedLockFuture waiting for response [node=" + rmtNodeId
+
                             ", cache=" + cctx.name() +
                             ", miniId=" + m.futId +

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/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 8c23473..ddd4dc3 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
@@ -43,6 +43,7 @@ import org.apache.ignite.events.Event;
 import org.apache.ignite.events.EventType;
 import org.apache.ignite.internal.IgniteClientDisconnectedCheckedException;
 import org.apache.ignite.internal.IgniteDiagnosticAware;
+import org.apache.ignite.internal.IgniteDiagnosticMessage;
 import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException;
 import org.apache.ignite.internal.IgniteInternalFuture;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
@@ -2158,7 +2159,7 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
     }
 
     /** {@inheritDoc} */
-    @Override public void prepareRequest() {
+    @Override public void prepareRequest(IgniteDiagnosticMessage.PreparedRequest context)
{
         if (!isDone()) {
             ClusterNode crd;
             Set<UUID> remaining;
@@ -2170,13 +2171,13 @@ public class GridDhtPartitionsExchangeFuture extends GridFutureAdapter<AffinityT
 
             if (crd != null) {
                 if (!crd.isLocal()) {
-                    cctx.kernalContext().cluster().dumpExchangeInfo(crd.id(), topologyVersion(),
"Exchange future waiting for coordinator " +
+                    context.exchangeInfo(crd.id(), topologyVersion(), "Exchange future waiting
for coordinator " +
                         "response [crd=" + crd.id() + ", topVer=" + topologyVersion() + ']');
                 }
                 else if (!remaining.isEmpty()){
                     UUID nodeId = remaining.iterator().next();
 
-                    cctx.kernalContext().cluster().dumpExchangeInfo(crd.id(), topologyVersion(),
"Exchange future waiting for server " +
+                    context.exchangeInfo(crd.id(), topologyVersion(), "Exchange future waiting
for server " +
                         "response [node=" + nodeId + ", topVer=" + topologyVersion() + ']');
                 }
             }

http://git-wip-us.apache.org/repos/asf/ignite/blob/68c27b38/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
index 13546df..19f5921 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
@@ -419,7 +419,7 @@ public class ClusterProcessor extends GridProcessorAdapter {
      * @param baseMsg Local message to log.
      * @return Message future.
      */
-    private IgniteInternalFuture<String> diagnosticInfo(final UUID nodeId,
+    public IgniteInternalFuture<String> diagnosticInfo(final UUID nodeId,
         IgniteClosure<GridKernalContext, String> c,
         final String baseMsg) {
         final GridFutureAdapter<String> infoFut = new GridFutureAdapter<>();


Mime
View raw message