summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-05-07 15:37:39 +0200
committerKjetil Ørbekk <kjetil.orbekk@gmail.com>2012-05-07 15:37:39 +0200
commitd820490376742bb1b08c12d75cffafa05108459c (patch)
tree2f0a1829473f439f4385fc159e90e3b76698a89e
parentacb7a2cd0794d8ed6f623ad6b279f193aa76188e (diff)
Remove some network metadata from State.
Remove .masterUrl, .masterLocation and networkName.
-rw-r--r--same/src/main/java/com/orbekk/same/Client.java7
-rw-r--r--same/src/main/java/com/orbekk/same/Master.java26
-rw-r--r--same/src/main/java/com/orbekk/same/MasterController.java2
-rw-r--r--same/src/main/java/com/orbekk/same/SameController.java7
-rw-r--r--same/src/main/java/com/orbekk/same/State.java4
-rw-r--r--same/src/test/java/com/orbekk/same/FunctionalTest.java19
-rw-r--r--same/src/test/java/com/orbekk/same/MasterTest.java4
-rw-r--r--same/src/test/java/com/orbekk/same/VariableFactoryTest.java2
8 files changed, 26 insertions, 45 deletions
diff --git a/same/src/main/java/com/orbekk/same/Client.java b/same/src/main/java/com/orbekk/same/Client.java
index 2479591..5f9cfd4 100644
--- a/same/src/main/java/com/orbekk/same/Client.java
+++ b/same/src/main/java/com/orbekk/same/Client.java
@@ -154,9 +154,7 @@ public class Client {
if (masterInfo != null &&
request.getMasterId() <= masterInfo.getMasterId()) {
logger.warn("{} tried to take over, but current master is " +
- "{}:{}. Ignoring", new Object[]{request,
- state.getDataOf(".masterUrl"),
- masterInfo.getMasterId()});
+ "{}. Ignoring", masterInfo);
return;
}
abortMasterElection();
@@ -223,7 +221,8 @@ public class Client {
}
if (!currentMasterProposal.isCancelled() && result != null &&
masterInfo.getMasterId() <= failedMaster.getMasterId()) {
- masterController.enableMaster(new State(state), result);
+ masterController.enableMaster(failedMaster.getNetworkName(),
+ new State(state), result);
} else {
logger.info("Master election aborted. Master already chosen.");
}
diff --git a/same/src/main/java/com/orbekk/same/Master.java b/same/src/main/java/com/orbekk/same/Master.java
index 4327a7a..473fd1e 100644
--- a/same/src/main/java/com/orbekk/same/Master.java
+++ b/same/src/main/java/com/orbekk/same/Master.java
@@ -17,7 +17,6 @@ package com.orbekk.same;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger;
@@ -28,15 +27,14 @@ import com.google.protobuf.RpcController;
import com.orbekk.protobuf.Rpc;
import com.orbekk.same.Services.ClientState;
import com.orbekk.same.Services.Empty;
-import com.orbekk.same.Services.UpdateComponentResponse;
import com.orbekk.same.State.Component;
import com.orbekk.util.WorkQueue;
public class Master {
private Logger logger = LoggerFactory.getLogger(getClass());
private final ConnectionManager connections;
- private String myUrl;
private String myLocation; // Protobuf server location, i.e., myIp:port
+ private String networkName;
private AtomicLong revision = new AtomicLong(1);
State state;
private volatile int masterId = 1;
@@ -65,36 +63,29 @@ public class Master {
public static Master create(ConnectionManager connections,
String myUrl, String networkName,
String myLocation, RpcFactory rpcf) {
- State state = new State(networkName);
- state.update(".masterUrl", myUrl, 1);
- state.update(".masterLocation", myLocation, 1);
- return new Master(state, connections, myUrl, myLocation, rpcf);
+ State state = new State();
+ return new Master(state, connections, networkName, myLocation, rpcf);
}
Master(State initialState, ConnectionManager connections,
- String myUrl, String myLocation, RpcFactory rpcf) {
+ String networkName, String myLocation, RpcFactory rpcf) {
this.state = initialState;
this.connections = connections;
- this.myUrl = myUrl;
this.myLocation = myLocation;
+ this.networkName = networkName;
this.rpcf = rpcf;
}
public String getNetworkName() {
- return state.getDataOf(".networkName");
+ return networkName;
}
public String getLocation() {
return myLocation;
}
- public String getUrl() {
- return myUrl;
- }
-
public Services.MasterState getMasterInfo() {
return Services.MasterState.newBuilder()
- .setMasterUrl(getUrl())
.setMasterLocation(getLocation())
.setNetworkName(getNetworkName())
.setMasterId(masterId)
@@ -247,9 +238,6 @@ 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);
- state.update(".masterLocation", myLocation,
- state.getRevision(".masterLocation") + 100);
this.masterId = masterId;
for (final String location : state.getList(State.PARTICIPANTS)) {
@@ -268,7 +256,5 @@ public class Master {
}
client.masterTakeover(rpc, getMasterInfo(), done);
}
- updateStateRequestThread.add(".masterUrl");
- updateStateRequestThread.add(".masterLocation");
}
}
diff --git a/same/src/main/java/com/orbekk/same/MasterController.java b/same/src/main/java/com/orbekk/same/MasterController.java
index 712524d..59cbfcc 100644
--- a/same/src/main/java/com/orbekk/same/MasterController.java
+++ b/same/src/main/java/com/orbekk/same/MasterController.java
@@ -16,6 +16,6 @@
package com.orbekk.same;
public interface MasterController {
- void enableMaster(State lastKnownState, int masterId);
+ void enableMaster(String networkName, State lastKnownState, int masterId);
void disableMaster();
}
diff --git a/same/src/main/java/com/orbekk/same/SameController.java b/same/src/main/java/com/orbekk/same/SameController.java
index 9f1f9d2..6a0456d 100644
--- a/same/src/main/java/com/orbekk/same/SameController.java
+++ b/same/src/main/java/com/orbekk/same/SameController.java
@@ -93,7 +93,8 @@ public class SameController {
private MasterController masterController = new MasterController() {
@Override
- public void enableMaster(State lastKnownState, int masterId) {
+ public void enableMaster(String networkName,
+ State lastKnownState, int masterId) {
String myLocation = configuration.get("localIp") + ":" +
configuration.get("pport");
String masterUrl = configuration.get("baseUrl") +
@@ -140,7 +141,7 @@ public class SameController {
timeout, timeout);
RpcFactory rpcf = new RpcFactory(timeout);
- State clientState = new State(".InvalidClientNetwork");
+ State clientState = new State();
String baseUrl = String.format("http://%s:%s/",
configuration.get("localIp"), configuration.getInt("port"));
String clientUrl = baseUrl + "ClientService.json";
@@ -204,7 +205,7 @@ public class SameController {
public void createNetwork(String networkName) {
masterController.disableMaster();
- masterController.enableMaster(new State(networkName), 1);
+ masterController.enableMaster(networkName, new State(), 1);
joinNetwork(master.getMasterInfo());
}
diff --git a/same/src/main/java/com/orbekk/same/State.java b/same/src/main/java/com/orbekk/same/State.java
index 262fef0..d9f3cc0 100644
--- a/same/src/main/java/com/orbekk/same/State.java
+++ b/same/src/main/java/com/orbekk/same/State.java
@@ -41,9 +41,7 @@ public class State {
public static final String PARTICIPANTS = ".participants0";
- public State(String networkName) {
- update(".networkName", networkName, 1);
- updateFromObject(".participants", new ArrayList<String>(), 1);
+ public State() {
updateFromObject(PARTICIPANTS, new ArrayList<String>(), 1);
}
diff --git a/same/src/test/java/com/orbekk/same/FunctionalTest.java b/same/src/test/java/com/orbekk/same/FunctionalTest.java
index 078de58..0d13796 100644
--- a/same/src/test/java/com/orbekk/same/FunctionalTest.java
+++ b/same/src/test/java/com/orbekk/same/FunctionalTest.java
@@ -82,7 +82,7 @@ public class FunctionalTest {
}
Client newClient(String clientName, String clientUrl, String location) {
- Client client = new Client(new State(clientName), connections,
+ Client client = new Client(new State(), connections,
clientUrl, location, rpcf, executor);
connections.clientMap0.put(location, client.getNewService());
clients.add(client);
@@ -127,7 +127,6 @@ public class FunctionalTest {
}
for (Client c : clients) {
assertThat(c.getConnectionState(), is(ConnectionState.STABLE));
- assertThat(c.getMaster().getMasterUrl(), is(masterUrl));
assertThat(c.getMaster().getMasterLocation(), is(masterLocation));
}
}
@@ -152,7 +151,7 @@ public class FunctionalTest {
joinClients();
MasterController controller = new MasterController() {
@Override
- public void enableMaster(State lastKnownState, int masterId) {
+ public void enableMaster(String networkName, State lastKnownState, int masterId) {
newMaster.resumeFrom(lastKnownState, masterId);
}
@Override
@@ -170,15 +169,14 @@ public class FunctionalTest {
}
@Test public void onlyOneNewMaster() throws Exception {
- String newMasterUrl = "http://newMaster/MasterService.json";
String newMasterLocation = "newMaster:1";
final Master newMaster = Master.create(connections,
- newMasterUrl, "TestMaster", newMasterLocation, rpcf);
+ "NetworkName", "TestMaster", newMasterLocation, rpcf);
joinClients();
MasterController controller = new MasterController() {
boolean firstMaster = true;
@Override
- public synchronized void enableMaster(State lastKnownState,
+ public synchronized void enableMaster(String networkName, State lastKnownState,
int masterId) {
assertThat(firstMaster, is(true));
newMaster.resumeFrom(lastKnownState, masterId);
@@ -194,8 +192,7 @@ public class FunctionalTest {
client1.startMasterElection(master.getMasterInfo());
awaitExecution();
newMaster.performWork();
- assertThat(client1.getMaster().getMasterUrl(), is(newMasterUrl));
- assertThat(client2.getMaster().getMasterUrl(), is(newMasterUrl));
+ assertThat(client2.getMaster().getMasterLocation(), is(newMasterLocation));
}
@Test public void masterFails() throws Exception {
@@ -206,7 +203,7 @@ public class FunctionalTest {
joinClients();
MasterController controller = new MasterController() {
@Override
- public synchronized void enableMaster(State lastKnownState,
+ public synchronized void enableMaster(String networkName, State lastKnownState,
int masterId) {
newMaster.resumeFrom(lastKnownState, masterId);
}
@@ -224,7 +221,7 @@ public class FunctionalTest {
awaitExecution();
performWork();
newMaster.performWork();
- assertThat(client1.getMaster().getMasterUrl(), is(newMasterUrl));
- assertThat(client2.getMaster().getMasterUrl(), is(newMasterUrl));
+ assertThat(client1.getMaster().getMasterLocation(), is(newMasterLocation));
+ assertThat(client2.getMaster().getMasterLocation(), is(newMasterLocation));
}
}
diff --git a/same/src/test/java/com/orbekk/same/MasterTest.java b/same/src/test/java/com/orbekk/same/MasterTest.java
index e6f9686..85f737a 100644
--- a/same/src/test/java/com/orbekk/same/MasterTest.java
+++ b/same/src/test/java/com/orbekk/same/MasterTest.java
@@ -27,7 +27,7 @@ import org.junit.Test;
public class MasterTest {
private ExecutorService executor = Executors.newCachedThreadPool();
- private State state = new State("TestNetwork");
+ private State state = new State();
private TestConnectionManager connections = new TestConnectionManager();
private Master master;
private RpcFactory rpcf = new RpcFactory(5000);
@@ -45,7 +45,7 @@ public class MasterTest {
@Test
public void clientJoin() throws Exception {
Client client = new Client(
- new State("ClientNetwork"), connections,
+ new State(), connections,
"http://client/ClientService.json", "clientLocation", rpcf,
executor);
connections.clientMap0.put("clientLocation", client.getNewService());
diff --git a/same/src/test/java/com/orbekk/same/VariableFactoryTest.java b/same/src/test/java/com/orbekk/same/VariableFactoryTest.java
index c60ceab..e96bba8 100644
--- a/same/src/test/java/com/orbekk/same/VariableFactoryTest.java
+++ b/same/src/test/java/com/orbekk/same/VariableFactoryTest.java
@@ -46,7 +46,7 @@ public class VariableFactoryTest {
}
public void initializeSampleState() {
- sampleState = new State("TestState");
+ sampleState = new State();
sampleState.update("TestVariable", "1", 1);
sampleState.update("TestList", "[]", 1);
}