@Override public void onEvent(SensorEvent<Boolean> event) { final MySqlNode node = (MySqlNode) event.getSource(); if (Boolean.TRUE.equals(event.getValue()) && // We are interested in SERVICE_PROCESS_IS_RUNNING only while haven't come online yet. // Probably will get several updates while replication is initialized so an additional // check is needed whether we have already seen this. Boolean.FALSE.equals(node.getAttribute(MySqlNode.SERVICE_UP)) && !Boolean.TRUE.equals(node.getAttribute(NODE_REPLICATION_INITIALIZED))) { // Events executed sequentially so no need to synchronize here. node.sensors().set(NODE_REPLICATION_INITIALIZED, Boolean.TRUE); final Runnable nodeInitTaskBody; if (MySqlClusterUtils.IS_MASTER.apply(node)) { nodeInitTaskBody = new InitMasterTaskBody(cluster, node); } else { nodeInitTaskBody = new InitSlaveTaskBody(cluster, node, lock); } DynamicTasks.submitTopLevelTask(TaskBuilder.builder() .displayName("setup master-slave replication") .body(nodeInitTaskBody) .tag(BrooklynTaskTags.NON_TRANSIENT_TASK_TAG) .build(), node); } }
.build(); DynamicTasks.submitTopLevelTask(updateService, entity);