m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-12 16:36:42 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-01-12 16:36:42 +0100
commitedec7f92b20f1f873083bdf3198283fa822e0f64 (patch)
treedb9cac13dae0da577c63dfd9a368452be6c14f2a
parent37f413d69d8f60e327c564d2b9a604739f80080b (diff)
Start removing old gossips
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java3
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java16
-rw-r--r--src/main/java/pl/edu/mimuw/cloudatlas/model/ValueUtils.java4
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlTest.java18
-rw-r--r--src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java4
5 files changed, 32 insertions, 13 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
index 24ed0c1..06e067b 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/Agent.java
@@ -46,9 +46,12 @@ public class Agent {
String selectionStrategy = System.getProperty("Gossip.zone_strategy");
Long queryPeriod = Long.getLong("query_period");
Long gossipPeriod = Long.getLong("gossip_period");
+ Long freshnessPeriod = Long.getLong("freshness_period");
HierarchyConfig hierarchyConfig = new HierarchyConfig(eventBus, zonePath, selectionStrategy);
hierarchyConfig.startQueries(queryPeriod);
hierarchyConfig.startGossip(gossipPeriod, zonePath);
+ // TODO: should this be different than ZMI freshness period?
+ hierarchyConfig.startCleaningGossips(freshnessPeriod);
}
}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java
index f9e323a..92b7f66 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java
@@ -153,4 +153,20 @@ public class HierarchyConfig {
AgentUtils.startRecursiveTask(taskSupplier, queriesPeriod, eventBus);
}
+
+ public void startCleaningGossips(long gossipCleanPeriod) {
+ Supplier<TimerScheduledTask> taskSupplier = () ->
+ new TimerScheduledTask() {
+ public void run() {
+ try {
+ System.out.println("INFO: Scheduling old gossip cleanup");
+ sendMessage(new CleanOldGossipsMessage("", 0, ValueUtils.addToTime(ValueUtils.currentTime(), -gossipCleanPeriod)));
+ } catch (InterruptedException e) {
+ System.out.println("Interrupted while triggering queries");
+ }
+ }
+ };
+
+ AgentUtils.startRecursiveTask(taskSupplier, gossipCleanPeriod, eventBus);
+ }
}
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueUtils.java b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueUtils.java
index 3df8231..866349f 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueUtils.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/model/ValueUtils.java
@@ -12,4 +12,8 @@ public class ValueUtils {
public static ValueTime currentTime() {
return new ValueTime(System.currentTimeMillis());
}
+
+ public static ValueTime addToTime(ValueTime time, long millis) {
+ return time.addValue(new ValueDuration(millis));
+ }
}
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlTest.java b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlTest.java
index e35274b..d443fad 100644
--- a/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlTest.java
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlTest.java
@@ -84,7 +84,7 @@ public class GossipGirlTest {
Map<PathName, ValueTime> otherZoneTimestamps = makeOtherZoneTimestamps();
Map<Attribute, ValueTime> otherQueryTimestamps = makeOtherQueryTimestamps();
- noCoTamMessage = new NoCoTamMessage("", 0, 42, 0, otherZoneTimestamps, otherQueryTimestamps, TestUtil.addToTime(testTime, 10), TestUtil.addToTime(testTime, 22));
+ noCoTamMessage = new NoCoTamMessage("", 0, 42, 0, otherZoneTimestamps, otherQueryTimestamps, ValueUtils.addToTime(testTime, 10), ValueUtils.addToTime(testTime, 22));
attributesMessage1 = makeAttributesMessage("/son/bro", makeAttributes1());
attributesMessage2 = makeAttributesMessage("/son/whodis", makeAttributes2());
@@ -93,7 +93,7 @@ public class GossipGirlTest {
hejkaMessage = new HejkaMessage("", 0, 123, new PathName("/son/bro"), new PathName("/son/grand"), otherZoneTimestamps, otherQueryTimestamps);
hejkaMessage.setSentTimestamp(testTime);
- hejkaMessage.setReceivedTimestamp(TestUtil.addToTime(testTime, 15));
+ hejkaMessage.setReceivedTimestamp(ValueUtils.addToTime(testTime, 15));
hejkaMessage.setSenderAddress(theirContact.getAddress());
}
@@ -114,7 +114,7 @@ public class GossipGirlTest {
public AttributesMap makeAttributes2() {
AttributesMap attributes = new AttributesMap();
attributes.add("name", new ValueString("whodis"));
- attributes.add("timestamp", TestUtil.addToTime(testTime, -300));
+ attributes.add("timestamp", ValueUtils.addToTime(testTime, -300));
attributes.add("foo", new ValueInt(61l));
attributes.add("bar", new ValueString("nice"));
return attributes;
@@ -142,11 +142,11 @@ public class GossipGirlTest {
}
public void addOtherQueryTimestamp(Map<Attribute, ValueTime> timestamps, String name, long offset) {
- timestamps.put(new Attribute(name), TestUtil.addToTime(testTime, offset));
+ timestamps.put(new Attribute(name), ValueUtils.addToTime(testTime, offset));
}
public void addOtherZoneTimestamp(Map<PathName, ValueTime> timestamps, String path, long offset) {
- timestamps.put(new PathName(path), TestUtil.addToTime(testTime, offset));
+ timestamps.put(new PathName(path), ValueUtils.addToTime(testTime, offset));
}
public void setupHierarchy() {
@@ -290,7 +290,7 @@ public class GossipGirlTest {
new SimpleImmutableEntry(
new ValueQuery("SELECT 3 AS one"),
// TODO: this should be modified by GTP
- TestUtil.addToTime(testTime, 10)
+ ValueUtils.addToTime(testTime, 10)
)
);
@@ -403,7 +403,7 @@ public class GossipGirlTest {
new SimpleImmutableEntry(
new ValueQuery("SELECT 3 AS one"),
// TODO: this should be modified by GTP
- TestUtil.addToTime(testTime, 10)
+ ValueUtils.addToTime(testTime, 10)
)
);
@@ -426,7 +426,7 @@ public class GossipGirlTest {
executor.messagesToPass.take();
executor.messagesToPass.take();
- CleanOldGossipsMessage message = new CleanOldGossipsMessage("", 0, TestUtil.addToTime(ValueUtils.currentTime(), 10));
+ CleanOldGossipsMessage message = new CleanOldGossipsMessage("", 0, ValueUtils.addToTime(ValueUtils.currentTime(), 10));
gossipGirl.handleTyped(message);
gossipGirl.handleTyped(attributesMessage2);
assertEquals(0, executor.messagesToPass.size());
@@ -447,7 +447,7 @@ public class GossipGirlTest {
executor.messagesToPass.take();
executor.messagesToPass.take();
- CleanOldGossipsMessage message = new CleanOldGossipsMessage("", 0, TestUtil.addToTime(testTime, -10));
+ CleanOldGossipsMessage message = new CleanOldGossipsMessage("", 0, ValueUtils.addToTime(testTime, -10));
gossipGirl.handleTyped(message);
gossipGirl.handleTyped(attributesMessage2);
assertEquals(1, executor.messagesToPass.size());
diff --git a/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java b/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java
index 0fef6b4..ddc61a9 100644
--- a/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java
+++ b/src/test/java/pl/edu/mimuw/cloudatlas/model/TestUtil.java
@@ -9,8 +9,4 @@ public class TestUtil {
return count;
}
-
- public static ValueTime addToTime(ValueTime time, long millis) {
- return time.addValue(new ValueDuration(millis));
- }
}