IGNITE-8857 HashMap is returned instead of filtering wrapper. - Fixes #4258.

Signed-off-by: Dmitriy Pavlov <dpav...@apache.org>


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

Branch: refs/heads/ignite-8446
Commit: e1a3398b509a16f0db3b60751d0ef52e1b763a87
Parents: 4c295f8
Author: Sergey Chugunov <sergey.chugu...@gmail.com>
Authored: Thu Jun 28 17:29:20 2018 +0300
Committer: Dmitriy Pavlov <dpav...@apache.org>
Committed: Thu Jun 28 17:29:20 2018 +0300

----------------------------------------------------------------------
 .../zk/internal/ZookeeperClusterNode.java       |  4 ++--
 .../zk/internal/ZookeeperDiscoverySpiTest.java  | 22 ++++++++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e1a3398b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
----------------------------------------------------------------------
diff --git 
a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
 
b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
index 2fe3052..02e4123 100644
--- 
a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
+++ 
b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperClusterNode.java
@@ -243,11 +243,11 @@ public class ZookeeperClusterNode implements 
IgniteClusterNode, Externalizable,
     /** {@inheritDoc} */
     @Override public Map<String, Object> attributes() {
         // Even though discovery SPI removes this attribute after 
authentication, keep this check for safety.
-        return F.view(attrs, new IgnitePredicate<String>() {
+        return new HashMap<>(F.view(attrs, new IgnitePredicate<String>() {
             @Override public boolean apply(String s) {
                 return 
!IgniteNodeAttributes.ATTR_SECURITY_CREDENTIALS.equals(s);
             }
-        });
+        }));
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/e1a3398b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiTest.java
----------------------------------------------------------------------
diff --git 
a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiTest.java
 
b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiTest.java
index f04a880..4cfc6cb 100644
--- 
a/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiTest.java
+++ 
b/modules/zookeeper/src/test/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoverySpiTest.java
@@ -473,6 +473,28 @@ public class ZookeeperDiscoverySpiTest extends 
GridCommonAbstractTest {
     }
 
     /**
+     * Verifies that node attributes returned through public API are presented 
in standard form.
+     *
+     * It means there is no exotic classes that may unnecessary capture other 
classes from the context.
+     *
+     * For more information about the problem refer to
+     * <a 
href="https://issues.apache.org/jira/browse/IGNITE-8857";>IGNITE-8857</a>.
+     */
+    public void testNodeAttributesNotReferencingZookeeperClusterNode() throws 
Exception {
+        userAttrs = new HashMap<>();
+        userAttrs.put("testAttr", "testAttr");
+
+        try {
+            IgniteEx ignite = startGrid(0);
+
+            assertTrue(ignite.cluster().localNode().attributes() instanceof 
HashMap);
+        }
+        finally {
+            userAttrs = null;
+        }
+    }
+
+    /**
      * @throws Exception If failed.
      */
     public void testZkRootNotExists() throws Exception {

Reply via email to