From 36da6a754624f93e555bcaba8b3d0cdc28c17a0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Magdalena=20Grodzi=C5=84ska?= <mag.grodzinska@gmail.com>
Date: Sat, 11 Jan 2020 10:56:26 +0100
Subject: Make exp increases in good direction

---
 .../cloudatlas/agent/modules/GossipGirlStrategies.java      | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

(limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent')

diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlStrategies.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlStrategies.java
index 4cd534e..79efe39 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlStrategies.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlStrategies.java
@@ -34,7 +34,6 @@ public class GossipGirlStrategies {
         ArrayList<Pair<String, Double>> zoneProbabilities;
         zoneProbabilities = new ArrayList<>(fullPathLength);
 
-        // TODO check if we decrease in good direction
         for (int i = 0; i < fullPathLength; i++) {
             Pair<String, Double> probPair = new Pair<String, Double>(fullPathComponents.get(i), Math.exp((double) i+1));
             zoneProbabilities.add(probPair);
@@ -48,7 +47,6 @@ public class GossipGirlStrategies {
         zoneProbabilities = new ArrayList<>(fullPathLength);
         Double uniformProb = 1.0/fullPathLength;
 
-        // TODO good direction
         for (int i = 0; i < fullPathLength; i++) {
             Pair<String, Double> probPair = new Pair<String, Double>(fullPathComponents.get(i), uniformProb);
             zoneProbabilities.add(probPair);
@@ -72,10 +70,9 @@ public class GossipGirlStrategies {
     }
 
     private String updateRoundRobinExpFreqs() {
-        // TODO good direction
-        for (int i = roundRobinExpFreqs.size() - 1; i > 0; i--) {
+        for (int i = 0; i < roundRobinExpFreqs.size() - 1; i++) {
             Pair<String, Integer> p = roundRobinExpFreqs.get(i);
-            Pair<String, Integer> nextP = roundRobinExpFreqs.get(i-1);
+            Pair<String, Integer> nextP = roundRobinExpFreqs.get(i+1);
 
             if (2 * p.getSecond() < nextP.getSecond()) {
                 roundRobinExpFreqs.set(i, new Pair<String, Integer>(p.getFirst(), p.getSecond() + 1));
@@ -83,8 +80,10 @@ public class GossipGirlStrategies {
             }
         }
 
-        Pair<String, Integer> rootPath = roundRobinExpFreqs.get(0);
-        roundRobinExpFreqs.set(0, new Pair<String, Integer>(rootPath.getFirst(), rootPath.getSecond() + 1));
+        Pair<String, Integer> rootPath = roundRobinExpFreqs.get(roundRobinExpFreqs.size() - 1);
+        roundRobinExpFreqs.set(
+                roundRobinExpFreqs.size() - 1,
+                new Pair<String, Integer>(rootPath.getFirst(), rootPath.getSecond() + 1));
         return rootPath.getFirst();
     }
 
-- 
cgit v1.2.3


From 5aa6345de1464a372bc69219ef9b777991bde1dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Magdalena=20Grodzi=C5=84ska?= <mag.grodzinska@gmail.com>
Date: Sat, 11 Jan 2020 12:39:54 +0100
Subject: Add adding missing zones on attribute creation

---
 src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent')

diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
index 6761c94..3fca1d5 100644
--- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
+++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/Stanik.java
@@ -1,5 +1,6 @@
 package pl.edu.mimuw.cloudatlas.agent.modules;
 
+import java.nio.file.Path;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -141,7 +142,11 @@ public class Stanik extends Module {
      */
     public void handleSetAttribte(SetAttributeMessage message) {
         try {
-            ZMI zmi = hierarchy.findDescendant(new PathName(message.getPathName()));
+            PathName descendantPath = new PathName(message.getPathName());
+            if (!hierarchy.descendantExists(descendantPath)) {
+                addMissingZones(descendantPath);
+            }
+            ZMI zmi = hierarchy.findDescendant(descendantPath);
             ValueTime updateTimestamp = message.getUpdateTimestamp();
             ValueTime currentTimestamp = (ValueTime) zmi.getAttributes().getOrNull("timestamp");
             if (ValueUtils.valueLower(currentTimestamp, updateTimestamp)) {
-- 
cgit v1.2.3