Commit 8dfabbe3 authored by iwakeh's avatar iwakeh 🌴 Committed by Karsten Loesing
Browse files

Return results in deterministic order.

Part of task-25002.
parent a9a0f705
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -3,6 +3,11 @@
 * Medium changes
 * Medium changes
   - Stop omitting "n" in summary docs for "Unnamed" relays/bridges.
   - Stop omitting "n" in summary docs for "Unnamed" relays/bridges.


 * Minor changes
   - Make responses deterministic by always sorting results by
     fingerprint, either if no specific order was requested or to
     break ties after ordering results as requested.



# Changes in version 5.0-1.10.1 - 2018-02-07
# Changes in version 5.0-1.10.1 - 2018-02-07


+4 −6
Original line number Original line Diff line number Diff line
@@ -603,12 +603,10 @@ public class RequestHandler {
        uniqueBridges.add(bridge);
        uniqueBridges.add(bridge);
      }
      }
    }
    }
    if (this.order != null) {
    Comparator<SummaryDocument> comparator
    Comparator<SummaryDocument> comparator
        = new SummaryDocumentComparator(this.order);
        = new SummaryDocumentComparator(this.order);
    Collections.sort(uniqueRelays, comparator);
    Collections.sort(uniqueRelays, comparator);
    Collections.sort(uniqueBridges, comparator);
    Collections.sort(uniqueBridges, comparator);
    }
    this.orderedRelays.addAll(uniqueRelays);
    this.orderedRelays.addAll(uniqueRelays);
    this.orderedBridges.addAll(uniqueBridges);
    this.orderedBridges.addAll(uniqueBridges);
  }
  }
+5 −1
Original line number Original line Diff line number Diff line
@@ -13,7 +13,8 @@ public class SummaryDocumentComparator implements Comparator<SummaryDocument> {


  /** Comparator is initialized with the order parameters. */
  /** Comparator is initialized with the order parameters. */
  public SummaryDocumentComparator(String ... orderParameters) {
  public SummaryDocumentComparator(String ... orderParameters) {
    this.orderParameters = orderParameters;
    this.orderParameters
        = null == orderParameters ? new String[]{} : orderParameters;
  }
  }


  @Override
  @Override
@@ -45,6 +46,9 @@ public class SummaryDocumentComparator implements Comparator<SummaryDocument> {
        break;
        break;
      }
      }
    }
    }
    if (0 == result) {
      result = o1.getFingerprint().compareTo(o2.getFingerprint());
    }
    return result;
    return result;
  }
  }
}
}