summaryrefslogtreecommitdiff
path: root/same/src/main/java/com/orbekk/same/Master.java
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-03-20 15:34:54 +0100
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-03-20 15:34:54 +0100
commitf0ec603696bcec885f74bf5a8ce69d2ea07776f1 (patch)
treed05dc46ca0398dde8ba2285616d054863898dee6 /same/src/main/java/com/orbekk/same/Master.java
parente622d72a9d1cf7dbf5e2eaf5290aef073233c545 (diff)
Various fixes related to takeover.
Diffstat (limited to 'same/src/main/java/com/orbekk/same/Master.java')
-rw-r--r--same/src/main/java/com/orbekk/same/Master.java18
1 files changed, 14 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 3bb6260..ade0b1e 100644
--- a/same/src/main/java/com/orbekk/same/Master.java
+++ b/same/src/main/java/com/orbekk/same/Master.java
@@ -80,6 +80,20 @@ public class Master {
List<String> pending = getAndClear();
logger.info("Sending full state to {}", pending);
final List<Component> components = state.getComponents();
+ broadcaster.broadcast(pending, new ServiceOperation() {
+ @Override public void run(String url) {
+ ClientService client = connections.getClient(url);
+ try {
+ client.masterTakeover(
+ state.getDataOf(".masterUrl"),
+ state.getDataOf(".networkName"),
+ masterId);
+ } catch (Exception e) {
+ logger.info("Client {} failed to acknowledge master. Remove.");
+ removeParticipant(url);
+ }
+ }
+ });
broadcastNewComponents(pending, components);
}
};
@@ -120,10 +134,6 @@ 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());