summaryrefslogtreecommitdiff
path: root/same/src/main/java/com/orbekk/same/Master.java
diff options
context:
space:
mode:
Diffstat (limited to 'same/src/main/java/com/orbekk/same/Master.java')
-rw-r--r--same/src/main/java/com/orbekk/same/Master.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/same/src/main/java/com/orbekk/same/Master.java b/same/src/main/java/com/orbekk/same/Master.java
index 32d6ec2..3bb6260 100644
--- a/same/src/main/java/com/orbekk/same/Master.java
+++ b/same/src/main/java/com/orbekk/same/Master.java
@@ -13,6 +13,7 @@ public class Master {
private String myUrl;
State state;
private Broadcaster broadcaster;
+ private volatile int masterId = 0;
public static Master create(ConnectionManager connections,
Broadcaster broadcaster, String myUrl, String networkName) {
@@ -119,14 +120,14 @@ public class Master {
@Override public void run(String url) {
ClientService client = connections.getClient(url);
try {
+ client.masterTakeover(
+ state.getDataOf(".masterUrl"),
+ state.getDataOf(".networkName"),
+ masterId);
for (Component c : components) {
client.setState(c.getName(), c.getData(),
c.getRevision());
}
- client.masterTakeover(
- state.getDataOf(".masterUrl"),
- state.getDataOf(".networkName"),
- 0);
} catch (Exception e) {
logger.info("Client {} failed to receive state update.", url);
removeParticipant(url);
@@ -138,6 +139,8 @@ public class Master {
/** This master should take over from an earlier master. */
public void resumeFrom(State lastKnownState, final int masterId) {
state = lastKnownState;
+ state.update(".masterUrl", myUrl, state.getRevision(".masterUrl") + 100);
+ this.masterId = masterId;
broadcaster.broadcast(state.getList(".participants"),
new ServiceOperation() {
@Override