Forráskód Böngészése

Bug 26121: Improve BUILDTIMEOUT_SET accuracy.

We were miscounting the total number of circuits for the TIMEOUT_RATE and
CLOSE_RATE fields of this event.
Mike Perry 6 éve
szülő
commit
fe5764012a
2 módosított fájl, 17 hozzáadás és 4 törlés
  1. 6 0
      changes/bug26121
  2. 11 4
      src/or/circuitstats.c

+ 6 - 0
changes/bug26121

@@ -0,0 +1,6 @@
+  o Minor bugfixes (controller):
+    - Improve accuracy of the BUILDTIMEOUT_SET control port event's
+      TIMEOUT_RATE and CLOSE_RATE fields. (We were previously miscounting
+      the total number of circuits for these field values.) Fixes bug
+      26121; bugfix on 0.3.3.1-alpha.
+

+ 11 - 4
src/or/circuitstats.c

@@ -1908,13 +1908,20 @@ cbt_control_event_buildtimeout_set(const circuit_build_times_t *cbt,
 
   /* The timeout rate is the ratio of the timeout count over
    * the total number of circuits attempted. The total number of
-   * circuits is (timeouts+succeeded+closed), since a circuit can
-   * either timeout, close, or succeed. We cast the denominator
+   * circuits is (timeouts+succeeded), since every circuit
+   * either succeeds, or times out. "Closed" circuits are
+   * MEASURE_TIMEOUT circuits whose measurement period expired.
+   * All MEASURE_TIMEOUT circuits are counted in the timeouts stat
+   * before transitioning to MEASURE_TIMEOUT (in
+   * circuit_build_times_mark_circ_as_measurement_only()).
+   * MEASURE_TIMEOUT circuits that succeed are *not* counted as
+   * "succeeded". See circuit_build_times_handle_completed_hop().
+   *
+   * We cast the denominator
    * to promote it to double before the addition, to avoid int32
    * overflow. */
   const double total_circuits =
-    ((double)cbt->num_circ_timeouts) + cbt->num_circ_succeeded
-       + cbt->num_circ_closed;
+    ((double)cbt->num_circ_timeouts) + cbt->num_circ_succeeded;
   if (total_circuits >= 1.0) {
     timeout_rate = cbt->num_circ_timeouts / total_circuits;
     close_rate = cbt->num_circ_closed / total_circuits;