MySqlCluster - rebind backwards compatibility
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/71ddae11 Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/71ddae11 Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/71ddae11 Branch: refs/heads/master Commit: 71ddae118ff68956fe3856559ba20fbb134b7301 Parents: ccbee8e Author: Svetoslav Neykov <[email protected]> Authored: Tue Oct 20 09:24:26 2015 +0300 Committer: Svetoslav Neykov <[email protected]> Committed: Tue Oct 20 10:09:57 2015 +0300 ---------------------------------------------------------------------- .../database/mysql/InitSlaveTaskBody.java | 30 +++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/71ddae11/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/InitSlaveTaskBody.java ---------------------------------------------------------------------- diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/InitSlaveTaskBody.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/InitSlaveTaskBody.java index 1c75275..70e29d7 100644 --- a/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/InitSlaveTaskBody.java +++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/InitSlaveTaskBody.java @@ -39,6 +39,7 @@ import org.apache.brooklyn.core.effector.Effectors; import org.apache.brooklyn.core.effector.ssh.SshEffectorTasks; import org.apache.brooklyn.core.entity.EntityPredicates; import org.apache.brooklyn.core.sensor.DependentConfiguration; +import org.apache.brooklyn.core.sensor.Sensors; import org.apache.brooklyn.entity.database.mysql.MySqlNode.ExportDumpEffector; import org.apache.brooklyn.entity.software.base.SoftwareProcess; import org.apache.brooklyn.location.ssh.SshMachineLocation; @@ -245,7 +246,10 @@ public class InitSlaveTaskBody implements Runnable { } catch (InterruptedException e) { throw Exceptions.propagate(e); } - ReplicationSnapshot replicationSnapshot = getAttributeBlocking(cluster, MySqlCluster.REPLICATION_LAST_SLAVE_SNAPSHOT); + ReplicationSnapshot replicationSnapshot = getReplicationInfoMasterConfig(); + if (replicationSnapshot == null) { + replicationSnapshot = getAttributeBlocking(cluster, MySqlCluster.REPLICATION_LAST_SLAVE_SNAPSHOT); + } if (!isReplicationInfoValid(replicationSnapshot)) { final MySqlNode snapshotNode = getSnapshotNode(); final String dumpName = getDumpUniqueId() + ".sql"; @@ -261,6 +265,30 @@ public class InitSlaveTaskBody implements Runnable { } } + /** + * Rebind backwards compatibility + * @deprecated since 0.9.0 + */ + @Deprecated + private ReplicationSnapshot getReplicationInfoMasterConfig() { + Entity master = getMaster(); + AttributeSensor<String> MASTER_LOG_FILE = Sensors.newStringSensor( + "mysql.master.log_file", "The binary log file master is writing to"); + AttributeSensor<Integer> MASTER_LOG_POSITION = Sensors.newIntegerSensor( + "mysql.master.log_position", "The position in the log file to start replication"); + + String logFile = master.sensors().get(MASTER_LOG_FILE); + Integer logPos = master.sensors().get(MASTER_LOG_POSITION); + if(logFile != null && logPos != null) { + ReplicationSnapshot replicationSnapshot = new ReplicationSnapshot(null, null, logFile, logPos); + cluster.sensors().set(MySqlCluster.REPLICATION_LAST_SLAVE_SNAPSHOT, replicationSnapshot); + master.sensors().set(MASTER_LOG_FILE, null); + master.sensors().set(MASTER_LOG_POSITION, null); + return replicationSnapshot; + } + return null; + } + private Future<ReplicationSnapshot> createMasterReplicationSnapshot(final MySqlNode master, final String dumpName) { log.info("MySql cluster " + cluster + ": generating new replication snapshot on master node " + master + " with name " + dumpName); String dumpOptions = SNAPSHOT_DUMP_OPTIONS + " --master-data=2" + getDumpDatabases(master);
