소스 검색

rbtree insertion debug log

wip/issue7_chasing
Brice Figureau 15 년 전
부모
커밋
ba44ec7979
1개의 변경된 파일69개의 추가작업 그리고 0개의 파일을 삭제
  1. 69
    0
      ngx_http_uploadprogress_module.c

+ 69
- 0
ngx_http_uploadprogress_module.c 파일 보기

@@ -34,6 +34,7 @@ struct ngx_http_uploadprogress_node_s {
34 34
     time_t                           timeout;
35 35
     struct ngx_http_uploadprogress_node_s *prev;
36 36
     struct ngx_http_uploadprogress_node_s *next;
37
+    ngx_log_t                       *log;
37 38
     u_char                           len;
38 39
     u_char                           data[1];
39 40
 };
@@ -870,6 +871,7 @@ ngx_http_uploadprogress_handler(ngx_http_request_t * r)
870 871
     up->rest = 0;
871 872
     up->length = 0;
872 873
     up->timeout = 0;
874
+    up->log = NULL;
873 875
 
874 876
     up->next = ctx->list_head.next;
875 877
     up->next->prev = up;
@@ -918,12 +920,35 @@ ngx_http_uploadprogress_rbtree_insert_value(ngx_rbtree_node_t * temp,
918 920
                                             ngx_rbtree_node_t * sentinel)
919 921
 {
920 922
      ngx_http_uploadprogress_node_t  *upn, *upnt;
923
+     ngx_log_t *log = NULL;
924
+
925
+     log = ((ngx_http_uploadprogress_node_t *)node)->log;
926
+
927
+     if (log != NULL) {
928
+         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0,
929
+                        "upload-progree: rbtree insert %08XD to be inserted", node->key);
930
+            log_node(node, log);            
931
+     }     
921 932
 
922 933
      for (;;) {
923 934
 
935
+         if (log != NULL) {
936
+             ngx_log_debug2(NGX_LOG_DEBUG_HTTP, log, 0,
937
+                            "upload-progree: rbtree insert %08XD compared to %08XD", node->key, temp->key);
938
+            log_node(temp, log);            
939
+         }     
924 940
          if (node->key < temp->key) {
925 941
 
942
+             if (log != NULL) {
943
+                 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
944
+                                "upload-progree: rbtree insert going left");
945
+             }     
946
+
926 947
             if (temp->left == sentinel) {
948
+                if (log != NULL) {
949
+                    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
950
+                                   "upload-progree: rbtree insert left end of tree");
951
+                }     
927 952
                 temp->left = node;
928 953
                 break;
929 954
             }
@@ -932,7 +957,16 @@ ngx_http_uploadprogress_rbtree_insert_value(ngx_rbtree_node_t * temp,
932 957
 
933 958
         } else if (node->key > temp->key) {
934 959
 
960
+            if (log != NULL) {
961
+                ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
962
+                               "upload-progree: rbtree insert going right");
963
+            }     
964
+
935 965
             if (temp->right == sentinel) {
966
+                if (log != NULL) {
967
+                    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
968
+                                   "upload-progree: rbtree insert right end of tree");
969
+                }     
936 970
                 temp->right = node;
937 971
                 break;
938 972
             }
@@ -941,12 +975,25 @@ ngx_http_uploadprogress_rbtree_insert_value(ngx_rbtree_node_t * temp,
941 975
 
942 976
         } else {                /* node->key == temp->key */
943 977
 
978
+            if (log != NULL) {
979
+                ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
980
+                               "upload-progree: equal hashes");
981
+            }     
944 982
             upn = (ngx_http_uploadprogress_node_t *) node;
945 983
             upnt = (ngx_http_uploadprogress_node_t *) temp;
946 984
 
947 985
             if (ngx_memn2cmp(upn->data, upnt->data, upn->len, upnt->len) < 0) {
948 986
 
987
+                if (log != NULL) {
988
+                    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
989
+                                   "upload-progree: rbtree insert eq h node < temp, going left");
990
+                }     
991
+
949 992
                 if (temp->left == sentinel) {
993
+                    if (log != NULL) {
994
+                        ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
995
+                                       "upload-progree: rbtree insert end of left");
996
+                    }     
950 997
                     temp->left = node;
951 998
                     break;
952 999
                 }
@@ -955,7 +1002,15 @@ ngx_http_uploadprogress_rbtree_insert_value(ngx_rbtree_node_t * temp,
955 1002
 
956 1003
             } else {
957 1004
 
1005
+                if (log != NULL) {
1006
+                    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
1007
+                                   "upload-progree: rbtree insert eq h node > temp, going right");
1008
+                }     
958 1009
                 if (temp->right == sentinel) {
1010
+                    if (log != NULL) {
1011
+                        ngx_log_debug0(NGX_LOG_DEBUG_HTTP, log, 0,
1012
+                                       "upload-progree: rbtree insert end of right");
1013
+                    }     
959 1014
                     temp->right = node;
960 1015
                     break;
961 1016
                 }
@@ -964,6 +1019,11 @@ ngx_http_uploadprogress_rbtree_insert_value(ngx_rbtree_node_t * temp,
964 1019
             }
965 1020
         }
966 1021
     }
1022
+
1023
+    if (log != NULL) {
1024
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0,
1025
+                       "upload-progree: rbtree insert insert below %08XD", temp->key);
1026
+    }     
967 1027
     
968 1028
     node->parent = temp;
969 1029
     node->left = sentinel;
@@ -1208,6 +1268,7 @@ ngx_http_uploadprogress_errortracker(ngx_http_request_t * r)
1208 1268
         node->key = hash;
1209 1269
         up->len = (u_char) id->len;
1210 1270
         up->err_status = r->err_status;
1271
+        up->log = r->connection->log;
1211 1272
         ngx_memcpy(up->data, id->data, id->len);
1212 1273
 
1213 1274
         up->next = ctx->list_head.next;
@@ -1220,6 +1281,14 @@ ngx_http_uploadprogress_errortracker(ngx_http_request_t * r)
1220 1281
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1221 1282
                        "trackuploads error-tracking: %08XD inserted in rbtree", hash);
1222 1283
 
1284
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1285
+                  "trackuploads error-tracking: checking if %08XD is correctly inserted in rbtree", hash);
1286
+
1287
+        if (find_node(id, ctx, r->connection->log) == NULL) {
1288
+            ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1289
+                      "trackuploads error-tracking: %08XD hasn't been correctly added, this suggests an rbtree issue", hash);
1290
+        }
1291
+
1223 1292
         /* start the timer if needed */
1224 1293
         if (!upcf->cleanup.timer_set) {
1225 1294
             upcf->cleanup.data = upcf->shm_zone;

Loading…
취소
저장