Просмотр исходного кода

Merge commit 'karsten/stats-fixes-master'

Roger Dingledine 16 лет назад
Родитель
Сommit
180a4b6a74
5 измененных файлов с 14 добавлено и 6 удалено
  1. 3 0
      ChangeLog
  2. 5 1
      src/or/geoip.c
  3. 1 1
      src/or/main.c
  4. 1 1
      src/or/or.h
  5. 4 3
      src/or/rephist.c

+ 3 - 0
ChangeLog

@@ -12,6 +12,9 @@ Changes in version 0.2.2.4-alpha - 2009-??-??
       code, and so on.  The unit test code has moved to its own
       code, and so on.  The unit test code has moved to its own
       subdirectory, and has been split into multiple modules.
       subdirectory, and has been split into multiple modules.
 
 
+  o Minor bugfixes:
+    - Fix a couple of smaller issues with gathering statistics. Bugfixes
+      on 0.2.2.1-alpha.
 
 
 Changes in version 0.2.2.3-alpha - 2009-09-23
 Changes in version 0.2.2.3-alpha - 2009-09-23
   o Major bugfixes:
   o Major bugfixes:

+ 5 - 1
src/or/geoip.c

@@ -370,10 +370,12 @@ static void
 rotate_request_period(void)
 rotate_request_period(void)
 {
 {
   SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
   SMARTLIST_FOREACH(geoip_countries, geoip_country_t *, c, {
+#if REQUEST_HIST_LEN > 1
       memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
       memmove(&c->n_v2_ns_requests[0], &c->n_v2_ns_requests[1],
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
       memmove(&c->n_v3_ns_requests[0], &c->n_v3_ns_requests[1],
       memmove(&c->n_v3_ns_requests[0], &c->n_v3_ns_requests[1],
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
               sizeof(uint32_t)*(REQUEST_HIST_LEN-1));
+#endif
       c->n_v2_ns_requests[REQUEST_HIST_LEN-1] = 0;
       c->n_v2_ns_requests[REQUEST_HIST_LEN-1] = 0;
       c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
       c->n_v3_ns_requests[REQUEST_HIST_LEN-1] = 0;
     });
     });
@@ -393,7 +395,7 @@ geoip_note_client_seen(geoip_client_action_t action,
   clientmap_entry_t lookup, *ent;
   clientmap_entry_t lookup, *ent;
   if (action == GEOIP_CLIENT_CONNECT) {
   if (action == GEOIP_CLIENT_CONNECT) {
     /* Only remember statistics as entry guard or as bridge. */
     /* Only remember statistics as entry guard or as bridge. */
-    if (!options->EntryStatistics ||
+    if (!options->EntryStatistics &&
         (!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
         (!(options->BridgeRelay && options->BridgeRecordUsageByCountry)))
       return;
       return;
     /* Did we recently switch from bridge to relay or back? */
     /* Did we recently switch from bridge to relay or back? */
@@ -1009,6 +1011,8 @@ geoip_dirreq_stats_write(time_t now)
   if (fprintf(out, "dirreq-v3-reqs %s\ndirreq-v2-reqs %s\n",
   if (fprintf(out, "dirreq-v3-reqs %s\ndirreq-v2-reqs %s\n",
               data_v3 ? data_v3 : "", data_v2 ? data_v2 : "") < 0)
               data_v3 ? data_v3 : "", data_v2 ? data_v2 : "") < 0)
     goto done;
     goto done;
+  tor_free(data_v2);
+  tor_free(data_v3);
 #define RESPONSE_GRANULARITY 8
 #define RESPONSE_GRANULARITY 8
   for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
   for (i = 0; i < GEOIP_NS_RESPONSE_NUM; i++) {
     ns_v2_responses[i] = round_uint32_to_next_multiple_of(
     ns_v2_responses[i] = round_uint32_to_next_multiple_of(

+ 1 - 1
src/or/main.c

@@ -981,7 +981,6 @@ run_scheduled_events(time_t now)
         time_to_write_stats_files = now + WRITE_STATS_INTERVAL;
         time_to_write_stats_files = now + WRITE_STATS_INTERVAL;
       } else {
       } else {
         /* Write stats to disk. */
         /* Write stats to disk. */
-        time_to_write_stats_files += WRITE_STATS_INTERVAL;
         if (options->CellStatistics)
         if (options->CellStatistics)
           rep_hist_buffer_stats_write(time_to_write_stats_files);
           rep_hist_buffer_stats_write(time_to_write_stats_files);
         if (options->DirReqStatistics)
         if (options->DirReqStatistics)
@@ -990,6 +989,7 @@ run_scheduled_events(time_t now)
           geoip_entry_stats_write(time_to_write_stats_files);
           geoip_entry_stats_write(time_to_write_stats_files);
         if (options->ExitPortStatistics)
         if (options->ExitPortStatistics)
           rep_hist_exit_stats_write(time_to_write_stats_files);
           rep_hist_exit_stats_write(time_to_write_stats_files);
+        time_to_write_stats_files += WRITE_STATS_INTERVAL;
       }
       }
     } else {
     } else {
       /* Never write stats to disk */
       /* Never write stats to disk */

+ 1 - 1
src/or/or.h

@@ -3867,7 +3867,7 @@ int dnsserv_launch_request(const char *name, int is_reverse);
 #define DIR_ENTRY_RECORD_USAGE_RETAIN_IPS (24*60*60)
 #define DIR_ENTRY_RECORD_USAGE_RETAIN_IPS (24*60*60)
 /** How long do we have to have observed per-country request history before
 /** How long do we have to have observed per-country request history before
  * we are willing to talk about it? */
  * we are willing to talk about it? */
-#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (24*60*60)
+#define DIR_RECORD_USAGE_MIN_OBSERVATION_TIME (12*60*60)
 
 
 #ifdef GEOIP_PRIVATE
 #ifdef GEOIP_PRIVATE
 int geoip_parse_entry(const char *line);
 int geoip_parse_entry(const char *line);

+ 4 - 3
src/or/rephist.c

@@ -1461,9 +1461,9 @@ rep_hist_exit_stats_write(time_t now)
               comma ? "," : "", other_streams)<0)
               comma ? "," : "", other_streams)<0)
     goto done;
     goto done;
   /* Reset counters */
   /* Reset counters */
-  memset(exit_bytes_read, 0, sizeof(exit_bytes_read));
-  memset(exit_bytes_written, 0, sizeof(exit_bytes_written));
-  memset(exit_streams, 0, sizeof(exit_streams));
+  memset(exit_bytes_read, 0, EXIT_STATS_NUM_PORTS * sizeof(uint64_t));
+  memset(exit_bytes_written, 0, EXIT_STATS_NUM_PORTS * sizeof(uint64_t));
+  memset(exit_streams, 0, EXIT_STATS_NUM_PORTS * sizeof(uint32_t));
   start_of_exit_stats_interval = now;
   start_of_exit_stats_interval = now;
 
 
   if (open_file)
   if (open_file)
@@ -2771,6 +2771,7 @@ rep_hist_buffer_stats_write(time_t now)
     goto done;
     goto done;
   finish_writing_to_file(open_file);
   finish_writing_to_file(open_file);
   open_file = NULL;
   open_file = NULL;
+  start_of_buffer_stats_interval = now;
  done:
  done:
   if (open_file)
   if (open_file)
     abort_writing_to_file(open_file);
     abort_writing_to_file(open_file);