Repository: ignite
Updated Branches:
  refs/heads/master bf5131fa4 -> e36e383f1


IGNITE-7476 Avoid NPE during metrics gathering leading to discovery thread 
failure. - Fixes #3448.

Signed-off-by: Alexey Goncharuk <alexey.goncha...@gmail.com>


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

Branch: refs/heads/master
Commit: e36e383f1dea725c44270fad6b40648d832b187a
Parents: bf5131f
Author: Ilya Kasnacheev <ilya.kasnach...@gmail.com>
Authored: Fri Feb 9 17:07:55 2018 +0300
Committer: Alexey Goncharuk <alexey.goncha...@gmail.com>
Committed: Fri Feb 9 17:07:55 2018 +0300

----------------------------------------------------------------------
 .../discovery/GridDiscoveryManager.java         | 27 +++++++++++---------
 .../datastreamer/DataStreamerImpl.java          |  4 +--
 2 files changed, 16 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e36e383f/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 82d0f66..e731c52 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -1059,25 +1059,28 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
 
             /** {@inheritDoc} */
             @Override public Map<Integer, CacheMetrics> cacheMetrics() {
-                Collection<GridCacheAdapter<?, ?>> caches = 
ctx.cache().internalCaches();
+                try {
+                    Collection<GridCacheAdapter<?, ?>> caches = 
ctx.cache().internalCaches();
 
-                if (F.isEmpty(caches))
-                    return Collections.emptyMap();
+                    if (!F.isEmpty(caches)) {
+                        Map<Integer, CacheMetrics> metrics = 
U.newHashMap(caches.size());
 
-                Map<Integer, CacheMetrics> metrics = null;
+                        for (GridCacheAdapter<?, ?> cache : caches) {
+                            if (cache.context().isStatisticsEnabled() &&
+                                cache.context().started() &&
+                                
cache.context().affinity().affinityTopologyVersion().topologyVersion() > 0) {
 
-                for (GridCacheAdapter<?, ?> cache : caches) {
-                    if (cache.context().statisticsEnabled() &&
-                        cache.context().started() &&
-                        
cache.context().affinity().affinityTopologyVersion().topologyVersion() > 0) {
-                        if (metrics == null)
-                            metrics = U.newHashMap(caches.size());
+                                metrics.put(cache.context().cacheId(), 
cache.localMetrics());
+                            }
+                        }
 
-                        metrics.put(cache.context().cacheId(), 
cache.localMetrics());
+                        return metrics;
                     }
+                } catch (Exception e) {
+                    U.warn(log, "Failed to compute cache metrics", e);
                 }
 
-                return metrics == null ? Collections.<Integer, 
CacheMetrics>emptyMap() : metrics;
+                return Collections.emptyMap();
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/e36e383f/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
index 7d6a8d3..2b8a6c5 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImpl.java
@@ -2132,9 +2132,7 @@ public class DataStreamerImpl<K, V> implements 
IgniteDataStreamer<K, V>, Delayed
                         // No-op.
                     }
                     catch (IgniteCheckedException ex) {
-                        IgniteLogger log = cache.unwrap(Ignite.class).log();
-
-                        U.error(log, "Failed to set initial value for cache 
entry: " + e, ex);
+                        throw new IgniteException("Failed to set initial value 
for cache entry", ex);
                     }
                     finally {
                         cctx.shared().database().checkpointReadUnlock();

Reply via email to