[tor-commits] [tor/maint-0.2.2] Fix up some cell-queue stats issues in rephist.c

nickm at torproject.org nickm at torproject.org
Fri Apr 8 17:37:43 UTC 2011


commit 71fb2af62c0a60fee94f984b782531a5d492b055
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Apr 7 14:56:50 2011 -0400

    Fix up some cell-queue stats issues in rephist.c
    
    - Document the structure and variables.
    - Make circuits_for_buffer_stats into a static variable.
    - Don't die horribly if interval_length is 0.
    - Remove the unused local_circ_id field.
    - Reorder the fields of circ_buffer_stats_t for cleaner alignment layout.
---
 src/or/rephist.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/or/rephist.c b/src/or/rephist.c
index e56ce9e..74e156f 100644
--- a/src/or/rephist.c
+++ b/src/or/rephist.c
@@ -2330,14 +2330,19 @@ rep_hist_buffer_stats_init(time_t now)
   start_of_buffer_stats_interval = now;
 }
 
+/** Statistics from a single circuit.  Collected when the circuit closes, or
+ * when we flush statistics to disk. */
 typedef struct circ_buffer_stats_t {
-  uint32_t processed_cells;
+  /** Average number of cells in the circuit's queue */
   double mean_num_cells_in_queue;
+  /** Average time a cell waits in the queue. */
   double mean_time_cells_in_queue;
-  uint32_t local_circ_id;
+  /** Total number of cells sent over this circuit */
+  uint32_t processed_cells;
 } circ_buffer_stats_t;
 
-smartlist_t *circuits_for_buffer_stats = NULL;
+/** List of circ_buffer_stats_t. */
+static smartlist_t *circuits_for_buffer_stats = NULL;
 
 /** Remember cell statistics for circuit <b>circ</b> at time
  * <b>end_of_interval</b> and reset cell counters in case the circuit
@@ -2361,6 +2366,8 @@ rep_hist_buffer_stats_add_circ(circuit_t *circ, time_t end_of_interval)
         circ->timestamp_created.tv_sec :
         start_of_buffer_stats_interval;
   interval_length = (int) (end_of_interval - start_of_interval);
+  if (interval_length <= 0)
+    return;
   stat = tor_malloc_zero(sizeof(circ_buffer_stats_t));
   stat->processed_cells = orcirc->processed_cells;
   /* 1000.0 for s -> ms; 2.0 because of app-ward and exit-ward queues */





More information about the tor-commits mailing list