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

rbtree insertion debug log

wip/issue7_chasing
Brice Figureau 15 лет назад
Родитель
Сommit
ba44ec7979
1 измененных файлов: 69 добавлений и 0 удалений
  1. 69
    0
      ngx_http_uploadprogress_module.c

+ 69
- 0
ngx_http_uploadprogress_module.c Просмотреть файл

34
     time_t                           timeout;
34
     time_t                           timeout;
35
     struct ngx_http_uploadprogress_node_s *prev;
35
     struct ngx_http_uploadprogress_node_s *prev;
36
     struct ngx_http_uploadprogress_node_s *next;
36
     struct ngx_http_uploadprogress_node_s *next;
37
+    ngx_log_t                       *log;
37
     u_char                           len;
38
     u_char                           len;
38
     u_char                           data[1];
39
     u_char                           data[1];
39
 };
40
 };
870
     up->rest = 0;
871
     up->rest = 0;
871
     up->length = 0;
872
     up->length = 0;
872
     up->timeout = 0;
873
     up->timeout = 0;
874
+    up->log = NULL;
873
 
875
 
874
     up->next = ctx->list_head.next;
876
     up->next = ctx->list_head.next;
875
     up->next->prev = up;
877
     up->next->prev = up;
918
                                             ngx_rbtree_node_t * sentinel)
920
                                             ngx_rbtree_node_t * sentinel)
919
 {
921
 {
920
      ngx_http_uploadprogress_node_t  *upn, *upnt;
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
      for (;;) {
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
          if (node->key < temp->key) {
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
             if (temp->left == sentinel) {
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
                 temp->left = node;
952
                 temp->left = node;
928
                 break;
953
                 break;
929
             }
954
             }
932
 
957
 
933
         } else if (node->key > temp->key) {
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
             if (temp->right == sentinel) {
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
                 temp->right = node;
970
                 temp->right = node;
937
                 break;
971
                 break;
938
             }
972
             }
941
 
975
 
942
         } else {                /* node->key == temp->key */
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
             upn = (ngx_http_uploadprogress_node_t *) node;
982
             upn = (ngx_http_uploadprogress_node_t *) node;
945
             upnt = (ngx_http_uploadprogress_node_t *) temp;
983
             upnt = (ngx_http_uploadprogress_node_t *) temp;
946
 
984
 
947
             if (ngx_memn2cmp(upn->data, upnt->data, upn->len, upnt->len) < 0) {
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
                 if (temp->left == sentinel) {
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
                     temp->left = node;
997
                     temp->left = node;
951
                     break;
998
                     break;
952
                 }
999
                 }
955
 
1002
 
956
             } else {
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
                 if (temp->right == sentinel) {
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
                     temp->right = node;
1014
                     temp->right = node;
960
                     break;
1015
                     break;
961
                 }
1016
                 }
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
     node->parent = temp;
1028
     node->parent = temp;
969
     node->left = sentinel;
1029
     node->left = sentinel;
1208
         node->key = hash;
1268
         node->key = hash;
1209
         up->len = (u_char) id->len;
1269
         up->len = (u_char) id->len;
1210
         up->err_status = r->err_status;
1270
         up->err_status = r->err_status;
1271
+        up->log = r->connection->log;
1211
         ngx_memcpy(up->data, id->data, id->len);
1272
         ngx_memcpy(up->data, id->data, id->len);
1212
 
1273
 
1213
         up->next = ctx->list_head.next;
1274
         up->next = ctx->list_head.next;
1220
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1281
         ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1221
                        "trackuploads error-tracking: %08XD inserted in rbtree", hash);
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
         /* start the timer if needed */
1292
         /* start the timer if needed */
1224
         if (!upcf->cleanup.timer_set) {
1293
         if (!upcf->cleanup.timer_set) {
1225
             upcf->cleanup.data = upcf->shm_zone;
1294
             upcf->cleanup.data = upcf->shm_zone;

Загрузка…
Отмена
Сохранить