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.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/same/src/main/java/com/orbekk/same/Master.java b/same/src/main/java/com/orbekk/same/Master.java
index 815f12f..627ea04 100644
--- a/same/src/main/java/com/orbekk/same/Master.java
+++ b/same/src/main/java/com/orbekk/same/Master.java
@@ -214,15 +214,28 @@ public class Master {
@Override public void run() {
try {
+ logger.info("Starting master takeover.");
sendTakeovers();
- getMostRecentState();
- updateParticipants();
- sendFullState();
- finishTakeover();
+ if (!aborted.get()) {
+ getMostRecentState();
+ }
+ if (!aborted.get()) {
+ updateParticipants();
+ }
+ if (!aborted.get()) {
+ sendFullState();
+ }
+ if (!aborted.get()) {
+ finishTakeover();
+ }
} catch (InterruptedException e) {
// Abort master takeover.
- logger.warn("Master takeover aborted: ", e);
aborted.set(true);
+ Thread.currentThread().interrupt();
+ }
+
+ if (aborted.get()) {
+ logger.warn("Master takeover aborted.");
}
}
}
@@ -392,7 +405,7 @@ public class Master {
this.masterId = masterId;
MasterTakeover takeover = new MasterTakeover(
state.getList(State.PARTICIPANTS), getMasterInfo());
- takeover.run();
+ new Thread(takeover).start();
}
public void updateRevision(long newRevision) {