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.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());