You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2015/10/20 17:51:42 UTC

[1/2] incubator-brooklyn git commit: Prevent DynamicCluster NPE when subclasses have not called super.init()

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master c2494dce8 -> f29b3fb10


Prevent DynamicCluster NPE when subclasses have not called super.init()


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

Branch: refs/heads/master
Commit: a8f191f71f1b08c5c0888761c66436184655879c
Parents: c2494dc
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue Oct 20 13:11:05 2015 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue Oct 20 13:11:05 2015 +0100

----------------------------------------------------------------------
 .../entity/group/DynamicClusterImpl.java        | 20 +++++++++++++++-----
 .../nosql/mongodb/MongoDBReplicaSetImpl.java    |  1 +
 2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a8f191f7/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
index 51708da..ac79dd6 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
@@ -170,7 +170,15 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
     @Override
     public void init() {
         super.init();
-        sensors().set(NEXT_CLUSTER_MEMBER_ID, new NextClusterMemberIdSupplier());
+        initialiseMemberId();
+    }
+
+    private void initialiseMemberId() {
+        synchronized (mutex) {
+            if (sensors().get(NEXT_CLUSTER_MEMBER_ID) == null) {
+                sensors().set(NEXT_CLUSTER_MEMBER_ID, new NextClusterMemberIdSupplier());
+            }
+        }
     }
 
     @Override
@@ -778,11 +786,13 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
     }
 
     @Override
-    public Entity addNode(Location loc, Map<?,?> extraFlags) {
-        Map<?,?> createFlags = MutableMap.builder()
+    public Entity addNode(Location loc, Map<?, ?> extraFlags) {
+        // In case subclasses are foolish and do not call super.init() when overriding.
+        initialiseMemberId();
+        Map<?, ?> createFlags = MutableMap.builder()
                 .putAll(getCustomChildFlags())
                 .putAll(extraFlags)
-                .put(CLUSTER_MEMBER_ID, getAttribute(NEXT_CLUSTER_MEMBER_ID).get())
+                .put(CLUSTER_MEMBER_ID, sensors().get(NEXT_CLUSTER_MEMBER_ID).get())
                 .build();
         if (LOG.isDebugEnabled()) {
             LOG.debug("Creating and adding a node to cluster {}({}) with properties {}", new Object[] { this, getId(), createFlags });
@@ -797,7 +807,7 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
         // Continue to call manage(), because some uses of NodeFactory (in tests) still instantiate the
         // entity via its constructor
         Entities.manage(entity);
-        
+
         addMember(entity);
         return entity;
     }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/a8f191f7/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetImpl.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetImpl.java
index bb29c8b..1a80c3a 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/mongodb/MongoDBReplicaSetImpl.java
@@ -137,6 +137,7 @@ public class MongoDBReplicaSetImpl extends DynamicClusterImpl implements MongoDB
     
     @Override
     public void init() {
+        super.init();
         enrichers().add(Enrichers.builder()
                 .aggregating(MongoDBAuthenticationMixins.ROOT_USERNAME)
                 .publishing(MongoDBAuthenticationMixins.ROOT_USERNAME)


[2/2] incubator-brooklyn git commit: This closes #973

Posted by sv...@apache.org.
This closes #973

Prevent DynamicCluster NPE when subclasses have not called super.init()


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

Branch: refs/heads/master
Commit: f29b3fb10b19fe45d07d488c26c38ef6fefb6b1a
Parents: c2494dc a8f191f
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Tue Oct 20 18:51:03 2015 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Tue Oct 20 18:51:03 2015 +0300

----------------------------------------------------------------------
 .../entity/group/DynamicClusterImpl.java        | 20 +++++++++++++++-----
 .../nosql/mongodb/MongoDBReplicaSetImpl.java    |  1 +
 2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------