Synchronise on non-null field in CumulusRDFApplication

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

Branch: refs/heads/master
Commit: 6e339dec2fabee6140c4f3900b4415d281b3a0dc
Parents: 3b403fd
Author: Sam Corbett <sam.corb...@cloudsoftcorp.com>
Authored: Thu Jan 8 12:20:03 2015 +0000
Committer: Sam Corbett <sam.corb...@cloudsoftcorp.com>
Committed: Fri Jan 9 13:56:40 2015 +0000

----------------------------------------------------------------------
 .../src/main/java/brooklyn/demo/CumulusRDFApplication.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/6e339dec/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
----------------------------------------------------------------------
diff --git 
a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
 
b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
index 6e11e21..3379bd4 100644
--- 
a/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
+++ 
b/examples/simple-nosql-cluster/src/main/java/brooklyn/demo/CumulusRDFApplication.java
@@ -109,6 +109,7 @@ public class CumulusRDFApplication extends 
AbstractApplication {
     private Entity cassandra;
     private TomcatServer webapp;
     private HostAndPort endpoint;
+    private final Object endpointMutex = new Object();
 
     /**
      * Create the application entities:
@@ -160,9 +161,11 @@ public class CumulusRDFApplication extends 
AbstractApplication {
             public Void call(ConfigBag parameters) {
                 // Process the YAML template given in the application config
                 String url = 
Entities.getRequiredUrlConfig(CumulusRDFApplication.this, 
CUMULUS_RDF_CONFIG_URL);
-                Map<String, Object> config = MutableMap.<String, 
Object>of("cassandraHostname", endpoint.getHostText(), "cassandraThriftPort", 
endpoint.getPort());
+                Map<String, Object> config;
+                synchronized (endpointMutex) {
+                    config = MutableMap.<String, 
Object>of("cassandraHostname", endpoint.getHostText(), "cassandraThriftPort", 
endpoint.getPort());
+                }
                 String contents = 
TemplateProcessor.processTemplateContents(ResourceUtils.create(CumulusRDFApplication.this).getResourceAsString(url),
 config);
-
                 // Copy the file contents to the remote machine
                 return 
DynamicTasks.queue(SshEffectorTasks.put("/tmp/cumulus.yaml").contents(contents)).get();
             }
@@ -173,7 +176,7 @@ public class CumulusRDFApplication extends 
AbstractApplication {
             @Override
             public void onEvent(SensorEvent<String> event) {
                 if (Strings.isNonBlank(event.getValue())) {
-                    synchronized (endpoint) {
+                    synchronized (endpointMutex) {
                         String hostname = 
Entities.submit(CumulusRDFApplication.this, 
DependentConfiguration.attributeWhenReady(cassandra, 
CassandraDatacenter.HOSTNAME)).getUnchecked();
                         Integer thriftPort = 
Entities.submit(CumulusRDFApplication.this, 
DependentConfiguration.attributeWhenReady(cassandra, 
CassandraDatacenter.THRIFT_PORT)).getUnchecked();
                         HostAndPort current = HostAndPort.fromParts(hostname, 
thriftPort);

Reply via email to