m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java1
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirl.java17
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java11
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPSerializer.java2
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java2
5 files changed, 31 insertions, 2 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java
index 0e972f4..3d3d279 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/EventBus.java
@@ -49,7 +49,6 @@ public class EventBus implements Runnable {
}
public void routeMessage(AgentMessage msg) throws InterruptedException {
- System.out.println("Event bus routing message");
executors.get(msg.getDestinationModule()).addMessage(msg);
}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirl.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirl.java
index e795b83..440df33 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirl.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirl.java
@@ -37,6 +37,7 @@ public class GossipGirl extends Module {
}
public void handleTyped(GossipGirlMessage message) throws InterruptedException, InvalidMessageType {
+ System.out.println("INFO: got GossipGirlMessage " + message.getType());
switch(message.getType()) {
case INITIATE:
initiateGossip((InitiateGossipMessage) message);
@@ -64,6 +65,7 @@ public class GossipGirl extends Module {
public void handleTyped(ResponseMessage message) throws InterruptedException, InvalidMessageType {
switch(message.getType()) {
case STATE:
+ System.out.println("INFO: GossipGirl got a StateMessage");
setState((StateMessage) message);
break;
default:
@@ -77,6 +79,7 @@ public class GossipGirl extends Module {
gossipStates.put(gossipId, new GossipGirlState(gossipId, message.getOurPath(), message.getTheirContact(), true));
GetStateMessage getState = new GetStateMessage("", 0, ModuleType.GOSSIP, gossipId);
+ System.out.println("INFO: GossipGirl sending GetStateMessage when initiating");
sendMessage(getState);
}
@@ -94,12 +97,14 @@ public class GossipGirl extends Module {
gossipStates.get(gossipId).handleHejka(message);
GetStateMessage getState = new GetStateMessage("", 0, ModuleType.GOSSIP, gossipId);
+ System.out.println("INFO: GossipGirl sending GetStateMessage when responding");
sendMessage(getState);
}
private void setState(StateMessage message) throws InterruptedException {
GossipGirlState state = gossipStates.get(message.getRequestId());
if (state != null) {
+ System.out.println("INFO: setting state in gossip " + Long.toString(message.getRequestId()));
state.setLastAction();
state.setState(message.getZMI(), message.getQueries());
if (state.state == GossipGirlState.State.SEND_HEJKA) {
@@ -113,6 +118,7 @@ public class GossipGirl extends Module {
state.getQueryTimestampsToSend()
);
UDUPMessage udupMessage = new UDUPMessage("", 0, state.theirContact, hejka);
+ System.out.println("INFO: GossipGirl sending HejkaMessage");
sendMessage(udupMessage);
state.sentHejka();
} else if (state.state == GossipGirlState.State.SEND_NO_CO_TAM) {
@@ -127,6 +133,7 @@ public class GossipGirl extends Module {
state.hejkaReceiveTimestamp
);
UDUPMessage udupMessage = new UDUPMessage("", 0, state.theirContact, noCoTam);
+ System.out.println("INFO: GossipGirl sending NoCoTamMessage");
sendMessage(udupMessage);
state.sentNoCoTam();
}
@@ -138,24 +145,30 @@ public class GossipGirl extends Module {
private void handleNoCoTam(NoCoTamMessage message) throws InterruptedException {
GossipGirlState state = gossipStates.get(message.getReceiverGossipId());
if (state != null) {
+ System.out.println("INFO: handling NoCoTamMessage in" + Long.toString(message.getReceiverGossipId()));
state.setLastAction();
state.handleNoCoTam(message);
+ System.out.println("DEBUG: handled NoCoTam in GossipGirlState");
sendInfo(state);
+ System.out.println("DEBUG: sent info after NoCoTam");
} else {
System.out.println("ERROR: GossipGirl got state for a nonexistent gossip");
}
}
private void sendInfo(GossipGirlState state) throws InterruptedException {
+ System.out.println("DEBUG: about to send info");
for (ZMI zmi : state.getZMIsToSend()) {
AttributesMessage attributesMessage = new AttributesMessage("", 0, zmi.getPathName(), zmi.getAttributes(), state.theirGossipId);
UDUPMessage udupMessage = new UDUPMessage("", 0, state.theirContact, attributesMessage);
+ System.out.println("INFO: GossipGirl sending AttributesMessage");
sendMessage(udupMessage);
}
for (Entry<Attribute, ValueQuery> query : state.getQueriesToSend()) {
QueryMessage queryMessage = new QueryMessage("", 0, query.getKey(), query.getValue(), state.theirGossipId);
UDUPMessage udupMessage = new UDUPMessage("", 0, state.theirContact, queryMessage);
+ System.out.println("INFO: GossipGirl sending QueryMessage");
sendMessage(udupMessage);
}
state.sentInfo();
@@ -164,12 +177,14 @@ public class GossipGirl extends Module {
private void handleAttributes(AttributesMessage message) throws InterruptedException {
GossipGirlState state = gossipStates.get(message.getReceiverGossipId());
if (state != null) {
+ System.out.println("INFO: handling Attributes in " + Long.toString(message.getReceiverGossipId()));
state.setLastAction();
state.gotAttributes(message);
if (state.state == GossipGirlState.State.SEND_INFO || state.state == GossipGirlState.State.SEND_INFO_AND_FINISH) {
sendInfo(state);
}
UpdateAttributesMessage updateMessage = new UpdateAttributesMessage("", 0, message.getPath().toString(), message.getAttributes());
+ System.out.println("INFO: GossipGirl sending UpdateAttributesMessage");
sendMessage(updateMessage);
if (state.state == GossipGirlState.State.FINISHED) {
gossipStates.remove(message.getReceiverGossipId());
@@ -182,6 +197,7 @@ public class GossipGirl extends Module {
private void handleQuery(QueryMessage message) throws InterruptedException {
GossipGirlState state = gossipStates.get(message.getReceiverGossipId());
if (state != null) {
+ System.out.println("INFO: handling Query in " + Long.toString(message.getReceiverGossipId()));
state.setLastAction();
state.gotQuery(message.getName());
Map<Attribute, Entry<ValueQuery, ValueTime>> queries = new HashMap();
@@ -190,6 +206,7 @@ public class GossipGirl extends Module {
new SimpleImmutableEntry(message.getQuery(), state.getTheirQueryTimestamp(message.getName()))
);
UpdateQueriesMessage updateMessage = new UpdateQueriesMessage("", 0, queries);
+ System.out.println("INFO: GossipGirl sending UpdateQueriesMessage");
sendMessage(updateMessage);
if (state.state == GossipGirlState.State.FINISHED) {
gossipStates.remove(message.getReceiverGossipId());
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java
index 70d57d9..e9bc02a 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java
@@ -60,6 +60,7 @@ public class GossipGirlState {
this.gossipId = gossipId;
this.ourPath = ourPath;
this.theirContact = theirContact;
+ System.out.println("INFO: initializing Gossip state, their contact " + theirContact.toString());
if (initiating) {
state = State.WAIT_FOR_STATE_INITIALIZER;
} else {
@@ -129,16 +130,20 @@ public class GossipGirlState {
}
public void handleNoCoTam(NoCoTamMessage message) {
+ System.out.println("DEBUG: in GossipGirlState handleNoCoTam");
switch (state) {
case WAIT_FOR_NO_CO_TAM:
+ System.out.println("DEBUG: lets do this");
theirGossipId = message.getSenderGossipId();
theirZoneTimestamps = message.getZoneTimestamps();
theirQueryTimestamps = message.getQueryTimestamps();
hejkaSendTimestamp = message.getHejkaSendTimestamp();
hejkaReceiveTimestamp = message.getHejkaReceiveTimestamp();
+ System.out.println("DEBUG: set basic stuff");
setZonesToSend();
setQueriesToSend();
setWaitingFor();
+ System.out.println("DEBUG: set big stuff");
state = State.SEND_INFO;
break;
default:
@@ -168,6 +173,8 @@ public class GossipGirlState {
public Map<PathName, ValueTime> getZoneTimestampsToSend() {
Map<PathName, ValueTime> timestamps = new HashMap();
+ System.out.println("Getting zone timestamps to send to " + theirContact.getName().toString());
+ System.out.println("hierarchy is " + hierarchy.toString());
collectZoneTimestamps(timestamps, hierarchy, theirContact.getName());
return timestamps;
}
@@ -183,12 +190,14 @@ public class GossipGirlState {
public void setZonesToSend() {
zonesToSend = new LinkedList();
+ System.out.println("DEBUG: timestamps to send: " + getZoneTimestampsToSend().toString());
for (Entry<PathName, ValueTime> timestampedPath : getZoneTimestampsToSend().entrySet()) {
ValueTime theirTimestamp = theirZoneTimestamps.get(timestampedPath.getKey());
if (theirTimestamp == null || ValueUtils.valueLower(theirTimestamp, timestampedPath.getValue())) {
zonesToSend.add(timestampedPath.getKey());
}
}
+ System.out.println("DEBUG: zones to send: " + zonesToSend.toString());
}
public void setQueriesToSend() {
@@ -199,6 +208,7 @@ public class GossipGirlState {
queriesToSend.add(timestampedQuery.getKey());
}
}
+ System.out.println("DEBUG: Queries to send: " + queriesToSend.toString());
}
public List<ZMI> getZMIsToSend() {
@@ -227,6 +237,7 @@ public class GossipGirlState {
}
public void collectZoneTimestamps(Map<PathName, ValueTime> timestamps, ZMI currentZMI, PathName recipientPath) {
+ System.out.println("collecting timestamps, on " + currentZMI.getPathName().toString());
for (ZMI zmi : currentZMI.getSons()) {
if (interestedIn(recipientPath, zmi.getPathName())) {
ValueTime timestamp = (ValueTime) zmi.getAttributes().getOrNull("timestamp");
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPSerializer.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPSerializer.java
index f858468..20cb98a 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPSerializer.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPSerializer.java
@@ -106,6 +106,7 @@ public class UDUPSerializer {
kryo.register(Value.class);
kryo.register(ValueBoolean.class);
kryo.register(ValueContact.class);
+ kryo.register(ValueDouble.class);
kryo.register(ValueDuration.class);
kryo.register(ValueInt.class);
kryo.register(ValueNull.class);
@@ -121,6 +122,7 @@ public class UDUPSerializer {
kryo.register(AttributesUtil.class);
kryo.register(Type.class);
+ kryo.register(Type.PrimaryType.class);
kryo.register(TypeCollection.class);
kryo.register(TypePrimitive.class);
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
index 0c5bc86..3da380c 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java
@@ -23,7 +23,7 @@ public class UDUPServer implements Runnable {
private final AtomicBoolean running;
public UDUPServer(InetAddress addr, int port, int bufSize) throws SocketException {
- this.socket = new DatagramSocket(port, addr);
+ this.socket = new DatagramSocket(port);
this.address = addr;
this.bufSize = bufSize;
this.partialPackets = new HashMap<>();