]> git.ipfire.org Git - thirdparty/opentracker.git/commitdiff
Add stats about when peers renew their announces.
authorerdgeist <>
Mon, 3 Nov 2008 01:26:38 +0000 (01:26 +0000)
committererdgeist <>
Mon, 3 Nov 2008 01:26:38 +0000 (01:26 +0000)
ot_mutex.h
ot_stats.c
ot_stats.h
trackerlogic.c

index c05bdfef7127c37cf720526b59df7f761cde8170..e16a0973a15ce21cd0845af92bd8c396a19410e4 100644 (file)
@@ -28,6 +28,7 @@ typedef enum {
   TASK_STATS_VERSION               = 0x000a,
   TASK_STATS_BUSY_NETWORKS         = 0x000b,
   TASK_STATS_VECTOR_DEBUG          = 0x000c,
+  TASK_STATS_RENEW                 = 0x000d,
 
   TASK_STATS                       = 0x0100, /* Mask */
   TASK_STATS_TORRENTS              = 0x0101,
index 5d9dab26168113e4f11890a265b8789e6c3a4a54..5427f1f9edf36aed2608682036b80e5eaee2fb06 100644 (file)
@@ -46,6 +46,7 @@ static unsigned long long ot_full_scrape_count = 0;
 static unsigned long long ot_full_scrape_request_count = 0;
 static unsigned long long ot_full_scrape_size = 0;
 static unsigned long long ot_failed_request_counts[CODE_HTTPERROR_COUNT];
+static unsigned long long ot_renewed[OT_POOLS_COUNT];
 
 static time_t ot_start_time;
 
@@ -492,6 +493,15 @@ static size_t stats_httperrors_txt ( char * reply ) {
   ot_failed_request_counts[6] );
 }
 
+static size_t stats_return_renew_bucket( char * reply ) {
+  char *r = reply;
+  int i;
+
+  for( i=0; i<OT_BUCKET_COUNT; ++i )
+    r+=sprintf(r,"%02i %llu\n", i, ot_renewed[i] );
+  return r - reply;
+}
+
 extern const char
 *g_version_opentracker_c, *g_version_accesslist_c, *g_version_clean_c, *g_version_fullscrape_c, *g_version_http_c,
 *g_version_iovec_c, *g_version_mutex_c, *g_version_stats_c, *g_version_sync_c, *g_version_udp_c, *g_version_vector_c,
@@ -525,6 +535,8 @@ size_t return_stats_for_tracker( char *reply, int mode, int format ) {
       return stats_httperrors_txt( reply );
     case TASK_STATS_VERSION:
       return stats_return_tracker_version( reply );
+    case TASK_STATS_RENEW:
+      return stats_return_renew_bucket( reply );
 #ifdef WANT_LOG_NETWORKS
     case TASK_STATS_BUSY_NETWORKS:
       return stats_return_busy_networks( reply );
@@ -596,6 +608,9 @@ void stats_issue_event( ot_status_event event, PROTO_FLAG proto, uint32_t event_
     case EVENT_FAILED:
       ot_failed_request_counts[event_data]++;
       break;
+    case EVENT_RENEW:
+      ot_renewed[event_data]++;
+      break;
     case EVENT_SYNC_IN_REQUEST:
     case EVENT_SYNC_IN:
     case EVENT_SYNC_OUT_REQUEST:
index a21251b87df1dd882aae59bcba27bf4a4246afbb..76fdcb5c1f8cee1d6d94f4b9cff7725ea74f73a6 100644 (file)
@@ -11,6 +11,7 @@ typedef enum {
   EVENT_READ,
   EVENT_CONNECT,      /* UDP only */
   EVENT_ANNOUNCE,
+  EVENT_RENEW,
   EVENT_SCRAPE,
   EVENT_FULLSCRAPE_REQUEST,
   EVENT_FULLSCRAPE_REQUEST_GZIP,
index 3d9ca5e6e56418725cb4225e53c97a15ba52d227..0aca2875a9631258e749e13f1401e9e95e6ee093 100644 (file)
@@ -91,6 +91,8 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer  WANT_SYNC_PARAM(
       return torrent;
     }
     base_pool = 1;
+    if( torrent->peer_list->base < NOW )
+      torrent->peer_list->base = NOW;
   }
 #endif
 
@@ -125,6 +127,7 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer  WANT_SYNC_PARAM(
         case 1: default:
                 torrent->peer_list->peer_count--;
                 mutex_bucket_unlock_by_hash( hash );
+                stats_issue_event( EVENT_RENEW, 0, i );
                 return torrent;
       }
     }
@@ -142,6 +145,7 @@ ot_torrent *add_peer_to_torrent( ot_hash *hash, ot_peer *peer  WANT_SYNC_PARAM(
     if( OT_FLAG( peer_dest ) & PEER_FLAG_COMPLETED )
       OT_FLAG( peer ) |= PEER_FLAG_COMPLETED;
 
+    stats_issue_event( EVENT_RENEW, 0, base_pool );
     memmove( peer_dest, peer, sizeof( ot_peer ) );
   }