You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ir...@apache.org on 2018/10/11 07:59:05 UTC
ignite git commit: IGNITE-9796 NPE if you call array() method on
empty GridLongList - Fixes #4917.
Repository: ignite
Updated Branches:
refs/heads/master ccf9c1ce3 -> 447ce47cc
IGNITE-9796 NPE if you call array() method on empty GridLongList - Fixes #4917.
Signed-off-by: Ivan Rakov <ir...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/447ce47c
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/447ce47c
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/447ce47c
Branch: refs/heads/master
Commit: 447ce47cc2781fc4b95172ab386e87f2c08ce040
Parents: ccf9c1c
Author: Eduard Shangareev <es...@gridgain.com>
Authored: Thu Oct 11 10:58:15 2018 +0300
Committer: Ivan Rakov <ir...@apache.org>
Committed: Thu Oct 11 10:58:15 2018 +0300
----------------------------------------------------------------------
.../processors/cluster/BaselineTopology.java | 14 +++---
.../ignite/internal/util/GridLongList.java | 6 +++
.../testframework/junits/GridAbstractTest.java | 53 ++++++++++----------
.../ignite/util/GridLongListSelfTest.java | 23 +++++++++
4 files changed, 63 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/447ce47c/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
index fcb7a39..5a7e66a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
@@ -298,13 +298,15 @@ public class BaselineTopology implements Serializable {
* @return Sorted list of baseline topology nodes.
*/
public List<ClusterNode> createBaselineView(
- List<ClusterNode> aliveNodes,
- @Nullable IgnitePredicate<ClusterNode> nodeFilter)
- {
+ Collection<ClusterNode> aliveNodes,
+ @Nullable IgnitePredicate<ClusterNode> nodeFilter
+ ) {
List<ClusterNode> res = new ArrayList<>(nodeMap.size());
+ boolean nullNodeFilter = nodeFilter == null;
+
for (ClusterNode node : aliveNodes) {
- if (nodeMap.containsKey(node.consistentId()) && (nodeFilter == null || CU.affinityNode(node, nodeFilter)))
+ if (nodeMap.containsKey(node.consistentId()) && (nullNodeFilter || CU.affinityNode(node, nodeFilter)))
res.add(node);
}
@@ -316,7 +318,7 @@ public class BaselineTopology implements Serializable {
Map<Object, ClusterNode> consIdMap = new HashMap<>();
for (ClusterNode node : aliveNodes) {
- if (nodeMap.containsKey(node.consistentId()) && (nodeFilter == null || CU.affinityNode(node, nodeFilter)))
+ if (nodeMap.containsKey(node.consistentId()) && (nullNodeFilter || CU.affinityNode(node, nodeFilter)))
consIdMap.put(node.consistentId(), node);
}
@@ -326,7 +328,7 @@ public class BaselineTopology implements Serializable {
if (!consIdMap.containsKey(consId)) {
DetachedClusterNode node = new DetachedClusterNode(consId, e.getValue());
- if (nodeFilter == null || CU.affinityNode(node, nodeFilter))
+ if (nullNodeFilter || CU.affinityNode(node, nodeFilter))
consIdMap.put(consId, node);
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/447ce47c/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
index d1f20e6..8d09539 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
@@ -42,6 +42,9 @@ public class GridLongList implements Message, Externalizable {
/** */
private static final long serialVersionUID = 0L;
+ /** Empty array. */
+ public static final long[] EMPTY_ARRAY = new long[0];
+
/** */
private long[] arr;
@@ -390,6 +393,9 @@ public class GridLongList implements Message, Externalizable {
* @return Array copy.
*/
public long[] array() {
+ if (arr == null)
+ return EMPTY_ARRAY;
+
long[] res = new long[idx];
System.arraycopy(arr, 0, res, 0, idx);
http://git-wip-us.apache.org/repos/asf/ignite/blob/447ce47c/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
index 13387de..f1d6682 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/GridAbstractTest.java
@@ -17,6 +17,31 @@
package org.apache.ignite.testframework.junits;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Proxy;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
+import javax.cache.configuration.Factory;
+import javax.cache.configuration.FactoryBuilder;
import junit.framework.TestCase;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
@@ -98,32 +123,6 @@ import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
-import javax.cache.configuration.Factory;
-import javax.cache.configuration.FactoryBuilder;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Proxy;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
import static org.apache.ignite.IgniteSystemProperties.IGNITE_CLIENT_CACHE_CHANGE_MESSAGE_TIMEOUT;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY;
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
@@ -604,7 +603,7 @@ public abstract class GridAbstractTest extends TestCase {
info(">>> Starting test class: " + testClassDescription() + " <<<");
if(isSafeTopology())
- assert G.allGrids().isEmpty() : "Not all Ignite instances stopped before tests execution";
+ assert G.allGrids().isEmpty() : "Not all Ignite instances stopped before tests execution:" + G.allGrids();
if (startGrid) {
IgniteConfiguration cfg = optimize(getConfiguration());
http://git-wip-us.apache.org/repos/asf/ignite/blob/447ce47c/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java b/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
index 3b62e32..8849a3d 100644
--- a/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/util/GridLongListSelfTest.java
@@ -150,4 +150,27 @@ public class GridLongListSelfTest extends TestCase {
assertEquals(asList(1, 3, 4, 5, 0), list);
assertEquals(asList(0, 1, 3, 4, 5), list.sort());
}
+
+ /**
+ *
+ */
+ public void testArray() {
+ GridLongList list = new GridLongList();
+
+ long[] array = list.array();
+
+ assertNotNull(array);
+
+ assertEquals(0, array.length);
+
+ list.add(1L);
+
+ array = list.array();
+
+ assertNotNull(array);
+
+ assertEquals(1, array.length);
+
+ assertEquals(1L, array[0]);
+ }
}
\ No newline at end of file