diff options
author | Martin <marcin.j.chrzanowski@gmail.com> | 2020-01-28 15:03:48 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-28 15:03:48 +0100 |
commit | 23082aca8e8089474c5b2f7dfd5072dc68cc881a (patch) | |
tree | 05679cf81514bb5343390e55e0508fa093bd640a /src/main/java/pl/edu/mimuw/cloudatlas/agent | |
parent | bf239e90080de1ddab4e0d03619ba2c17dea53bb (diff) | |
parent | 6cf8879512d73a2a75e76e85d94ae274919c29b5 (diff) |
Merge pull request #134 from m-chrzan/logs-n-contacts
Logs n contacts
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent')
-rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java | 42 |
1 files changed, 32 insertions, 10 deletions
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 1087b8a..11d6ef0 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/HierarchyConfig.java @@ -50,8 +50,10 @@ public class HierarchyConfig { PathName gossipLevel = gossipGirlStrategies.selectStrategy(zoneSelectionStrategy); ValueContact contact; if (random.nextDouble() < 0.2) { + System.out.println("FORCING FALLBACK"); contact = selectFallbackContact(state.getContacts()); } else { + System.out.println("LOOKING FOR CONTACT"); contact = selectContactFromLevel(gossipLevel, state); } @@ -66,6 +68,7 @@ public class HierarchyConfig { System.out.println("Interrupted while initiating gossip"); } catch (Exception e) { System.out.println("ERROR: something happened " + e.toString()); + e.printStackTrace(); } } }; @@ -77,13 +80,21 @@ public class HierarchyConfig { ZMI root = state.getZMI(); List<ZMI> siblings = getSiblings(root, path); filterEmptyContacts(siblings); + System.out.println("filtered siblings: " + siblings.toString()); if (siblings.isEmpty()) { + System.out.println("SIBLINGS IS EMPTY!!!"); return selectFallbackContact(state.getContacts()); } ZMI zmi = selectZMI(siblings); + System.out.println("SELECTED: " + zmi.toString()); ValueSet contactsValue = (ValueSet) zmi.getAttributes().getOrNull("contacts"); - Set<Value> valueSet = contactsValue.getValue(); + System.out.println("ITS CONTACTS: " + contactsValue.toString()); + Set<Value> valueSetOrig = contactsValue.getValue(); + System.out.println("valueSetOrig: " + valueSetOrig.toString()); + Set<Value> valueSet = new HashSet(valueSetOrig); + System.out.println("valueSet: " + valueSet.toString()); filterOurContact(valueSet); + System.out.println("FILTERED VALUE SET: " + valueSet.toString()); return selectContactFromSet(valueSet); } @@ -93,7 +104,7 @@ public class HierarchyConfig { Value value = (Value) it.next(); if (value.getType().getPrimaryType() == Type.PrimaryType.CONTACT) { ValueContact contact = (ValueContact) value; - if (!contact.getName().equals(ourPath)) { + if (contact.getName().equals(ourPath)) { it.remove(); } } else { @@ -129,7 +140,12 @@ public class HierarchyConfig { } private <T> ValueContact selectContactFromSet(Set<T> contacts) throws Exception { + if (contacts.size() == 0) { + System.out.println("GOT EMPTY SET FOR SELECTION"); + return null; + } int i = random.nextInt(contacts.size()); + System.out.println("ROLLED RANDOM: " + Integer.toString(i)); for (T contact : contacts) { if (i == 0) { return (ValueContact) contact; @@ -142,13 +158,14 @@ public class HierarchyConfig { private List<ZMI> getSiblings(ZMI root, PathName path) { try { - List<ZMI> siblingsAndI = root.findDescendant(path).getFather().getSons(); + System.out.println("DEBUG: path in getSiblings: " + path.toString()); + List<ZMI> siblingsImm = root.findDescendant(path).getFather().getSons(); + System.out.println("DEBUG: siblingsImm: " + siblingsImm.toString()); List<ZMI> siblings = new ArrayList(); - for (ZMI siblingOrI : siblingsAndI) { - if (!siblingOrI.getPathName().equals(path)) { - siblings.add(siblingOrI); - } + for (ZMI siblingOrI : siblingsImm) { + siblings.add(siblingOrI); } + System.out.println("found siblings: " + siblings.toString()); return siblings; } catch (ZMI.NoSuchZoneException e) { System.out.println("ERROR: didn't find path when looking for siblings"); @@ -161,9 +178,14 @@ public class HierarchyConfig { while (iterator.hasNext()) { ZMI zmi = iterator.next(); ValueSet contacts = (ValueSet) zmi.getAttributes().getOrNull("contacts"); + System.out.println("checking zmi " + zmi.toString()); + System.out.println("its contacts: " + contacts.toString()); if (contacts == null || contacts.isNull() || contacts.isEmpty() || onlyContactIsUs(contacts)) { + System.out.println("Let's remove it!"); iterator.remove(); - } + } else { + System.out.println("Let's keep it!"); + } } } @@ -172,14 +194,14 @@ public class HierarchyConfig { if (value.getType().getPrimaryType() == Type.PrimaryType.CONTACT) { ValueContact contact = (ValueContact) value; if (!contact.getName().equals(ourPath)) { - return true; + return false; } } else { System.out.println("WARN: non contact value passed to onlyContactIsUs"); } } - return false; + return true; } public void startQueries(long queriesPeriod) { |