Procházet zdrojové kódy

This is a temp commit to log the rb tree to chase issue #7 root cause

wip/issue7_chasing
Brice Figureau před 15 roky
rodič
revize
ea47086628
1 změnil soubory, kde provedl 43 přidání a 0 odebrání
  1. 43
    0
      ngx_http_uploadprogress_module.c

+ 43
- 0
ngx_http_uploadprogress_module.c Zobrazit soubor

@@ -347,6 +347,40 @@ get_tracking_id(ngx_http_request_t * r)
347 347
     return NULL;
348 348
 }
349 349
 
350
+
351
+static void log_node(ngx_rbtree_node_t  *node, ngx_log_t * log)
352
+{
353
+    ngx_http_uploadprogress_node_t  *up;
354
+    up = (ngx_http_uploadprogress_node_t *) node;
355
+
356
+    ngx_log_debug4(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node %s [%uO/%uO,%d,%d]",up->data,  up->rest, up->length, up->err_status, up->timeout );
357
+}
358
+
359
+static void log_rbtree(ngx_http_uploadprogress_ctx_t * ctx, ngx_log_t * log)
360
+{
361
+    ngx_http_uploadprogress_node_t  *up;
362
+    ngx_rbtree_node_t *node;
363
+
364
+    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, 
365
+                   "upload-progress: logging the whole rbtree");
366
+
367
+    node = (ngx_rbtree_node_t *) ctx->list_tail.prev;
368
+    for (;;) {
369
+        if (node == &ctx->list_head.node) {
370
+            break;
371
+        }
372
+
373
+        up = (ngx_http_uploadprogress_node_t *) node;
374
+
375
+        log_node(node, log);
376
+        
377
+        node = (ngx_rbtree_node_t *)up->prev;
378
+    }
379
+
380
+    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, 
381
+                   "upload-progress: end logging the whole rbtree");
382
+}
383
+
350 384
 static ngx_http_uploadprogress_node_t *
351 385
 find_node(ngx_str_t * id, ngx_http_uploadprogress_ctx_t * ctx, ngx_log_t * log)
352 386
 {
@@ -358,23 +392,30 @@ find_node(ngx_str_t * id, ngx_http_uploadprogress_ctx_t * ctx, ngx_log_t * log)
358 392
     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node %V", id);
359 393
 
360 394
     hash = ngx_crc32_short(id->data, id->len);
395
+    ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node hash %08XD", hash);
361 396
 
362 397
     node = ctx->rbtree->root;
363 398
     sentinel = ctx->rbtree->sentinel;
364 399
 
365 400
     while (node != sentinel) {
366 401
 
402
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node testing hash %08XD", node->key);
403
+        log_node(node, log);
404
+
367 405
         if (hash < node->key) {
406
+            ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node going left");
368 407
             node = node->left;
369 408
             continue;
370 409
         }
371 410
 
372 411
         if (hash > node->key) {
412
+            ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node going right");
373 413
             node = node->right;
374 414
             continue;
375 415
         }
376 416
 
377 417
         /* hash == node->key */
418
+        ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node hash matching");
378 419
 
379 420
         do {
380 421
             up = (ngx_http_uploadprogress_node_t *) node;
@@ -392,6 +433,7 @@ find_node(ngx_str_t * id, ngx_http_uploadprogress_ctx_t * ctx, ngx_log_t * log)
392 433
         } while (node != sentinel && hash == node->key);
393 434
 
394 435
         /* found a key with unmatching hash (and value), let's keep comparing hashes then */
436
+        ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: find_node hash not matching anymore");
395 437
     }
396 438
     ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0, "upload-progress: can't find node");
397 439
     return NULL;
@@ -594,6 +636,7 @@ ngx_http_reportuploads_handler(ngx_http_request_t * r)
594 636
     } else {
595 637
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
596 638
                        "reportuploads not found: %V", id);
639
+        log_rbtree(ctx,r->connection->log);
597 640
     }
598 641
     ngx_shmtx_unlock(&shpool->mutex);
599 642
 	ngx_free(id);

Načítá se…
Zrušit
Uložit