Commit aae78596 authored by Karsten Loesing's avatar Karsten Loesing
Browse files

Fix inconsistencies between summary/details docs.

Fixes #27187.
parent 7b0e8565
Loading
Loading
Loading
Loading
+4 −0
Changes for CHANGELOG.md: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
# 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.

+15 −7
Changes for src/main/java/org/torproject/metrics/onionoo/updater/NodeDetailsStatusUpdater.java: 15 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -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);