diff options
| author | Karsten Loesing <karsten.loesing@gmx.net> | 2020-03-31 15:03:28 +0200 |
|---|---|---|
| committer | Karsten Loesing <karsten.loesing@gmx.net> | 2020-03-31 15:03:28 +0200 |
| commit | aae785965fb0ada9e56f27b35431d566a6a18f12 (patch) | |
| tree | c48f51ecb2ffec991883ae6fd0baada91f09c10a | |
| parent | 7b0e856574067f52d012f744286aaf9903f68cb8 (diff) | |
Fix inconsistencies between summary/details docs.task-27187
Fixes #27187.
| -rw-r--r-- | CHANGELOG.md | 4 | ||||
| -rw-r--r-- | src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java | 22 |
2 files changed, 19 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index f8666fd..36cdac0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changes in version 8.0-1.2?.? - 2020-0?-?? + * Medium changes + - Fix inconsistencies between ASN/GeoIP/rDNS lookup results in + summary and details documents. + * Minor changes - Simplify logging configuration. diff --git a/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java b/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java index d59c533..f45d914 100644 --- a/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java +++ b/src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java @@ -474,10 +474,17 @@ public class NodeDetailsStatusUpdater implements DescriptorListener, updatedNodeStatus = this.knownNodes.get(fingerprint); String address = nodeStatus.getAddress(); if (address.equals(updatedNodeStatus.getAddress())) { - /* Only remember the last lookup time if the address has not - * changed. Otherwise we'll want to do a fresh lookup. */ + /* Only remember rDNS/GeoIP lookup results if the address has not + * changed. Otherwise we'll want to do fresh lookups anyway. */ + updatedNodeStatus.setVerifiedHostNames( + nodeStatus.getVerifiedHostNames()); + updatedNodeStatus.setUnverifiedHostNames( + nodeStatus.getUnverifiedHostNames()); updatedNodeStatus.setLastRdnsLookup( nodeStatus.getLastRdnsLookup()); + updatedNodeStatus.setCountryCode(nodeStatus.getCountryCode()); + updatedNodeStatus.setAsNumber(nodeStatus.getAsNumber()); + updatedNodeStatus.setAsName(nodeStatus.getAsName()); } int orPort = nodeStatus.getOrPort(); int dirPort = nodeStatus.getDirPort(); @@ -488,6 +495,10 @@ public class NodeDetailsStatusUpdater implements DescriptorListener, dirPort, orAddressesAndPorts); if (nodeStatus.getLastSeenMillis() > updatedNodeStatus.getLastSeenMillis()) { + /* Remember everything we learned from more recent consensuses or + * bridge network statuses during the last execution. Be sure to only + * include attributes here that have been set while processing these + * two descriptor types above, and nothing else. */ updatedNodeStatus.setNickname(nodeStatus.getNickname()); updatedNodeStatus.setAddress(address); updatedNodeStatus.setOrAddressesAndPorts(orAddressesAndPorts); @@ -498,14 +509,9 @@ public class NodeDetailsStatusUpdater implements DescriptorListener, updatedNodeStatus.setRelayFlags(nodeStatus.getRelayFlags()); updatedNodeStatus.setConsensusWeight( nodeStatus.getConsensusWeight()); - updatedNodeStatus.setCountryCode(nodeStatus.getCountryCode()); updatedNodeStatus.setDefaultPolicy( nodeStatus.getDefaultPolicy()); updatedNodeStatus.setPortList(nodeStatus.getPortList()); - updatedNodeStatus.setAsNumber(nodeStatus.getAsNumber()); - updatedNodeStatus.setAsName(nodeStatus.getAsName()); - updatedNodeStatus.setRecommendedVersion( - nodeStatus.isRecommendedVersion()); updatedNodeStatus.setVersion(nodeStatus.getVersion()); } if (nodeStatus.getFirstSeenMillis() @@ -520,6 +526,8 @@ public class NodeDetailsStatusUpdater implements DescriptorListener, nodeStatus.getEffectiveFamily()); updatedNodeStatus.setExtendedFamily( nodeStatus.getExtendedFamily()); + updatedNodeStatus.setRecommendedVersion( + nodeStatus.isRecommendedVersion()); } else { updatedNodeStatus = nodeStatus; this.knownNodes.put(fingerprint, nodeStatus); |
