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);