breaking FS big time, no idea why
authorChristian Grothoff <christian@grothoff.org>
Wed, 19 May 2010 21:45:22 +0000 (21:45 +0000)
committerChristian Grothoff <christian@grothoff.org>
Wed, 19 May 2010 21:45:22 +0000 (21:45 +0000)
src/fs/Makefile.am
src/fs/fs_test_lib.c
src/fs/fs_test_lib_data.conf
src/fs/gnunet-service-fs.c
src/fs/gnunet-service-fs_indexing.c
src/fs/test_fs_list_indexed_data.conf
src/fs/test_gnunet_service_fs_p2p.c

index 6c850a91d9ed0165cf1c4fbdea1b6b87faca8025..f287b6b319ff1d8baba9ae86a0d8b5fab7c03dd8 100644 (file)
@@ -143,7 +143,7 @@ check_SCRIPTS = \
  test_gnunet_fs_idx.py
 endif
 
-TESTS = $(check_SCRIPTS) \
+TESTS = \
  test_fs_directory \
  test_fs_download \
  test_fs_download_persistence \
@@ -159,7 +159,8 @@ TESTS = $(check_SCRIPTS) \
  test_fs_unindex_persistence \
  test_fs_uri \
  test_fs_test_lib \
- test_gnunet_service_fs_p2p
+ test_gnunet_service_fs_p2p \
+ $(check_SCRIPTS) 
 # $(check_PROGRAMS)
 
 
index fba44eaeb6fdcbaf2271e727d1cfcc6da6124c6f..f2fb0ab74dac018abf7f25c24a6bd322b2f38950 100644 (file)
@@ -180,6 +180,7 @@ progress_cb (void *cls,
 {
   struct GNUNET_FS_TestDaemon *daemon = cls;
 
+  fprintf (stderr, "PCB %d\n", info->status);
   switch (info->status)
     {
     case GNUNET_FS_STATUS_PUBLISH_COMPLETED:      
index 3f00352a739ee20b3890f743ec7eee89a04bdb31..ffe78fbb1d21cdd69058cf9f195776c73ab23194 100644 (file)
@@ -22,7 +22,6 @@ DEFAULTSERVICES = fs
 [datastore]
 #DEBUG = YES
 #PREFIX = valgrind --tool=memcheck --leak-check=yes
-#BINARY = /home/grothoff/bin/gnunet-service-datastore
 
 [statistics]
 PORT = 43467
@@ -31,7 +30,6 @@ HOSTNAME = localhost
 [transport-tcp]
 TIMEOUT = 300000
 #PORT = 43468
-#DEBUG = YES
 
 [peerinfo]
 PORT = 43469
@@ -51,10 +49,10 @@ TOTAL_QUOTA_OUT = 3932160
 [fs]
 PORT = 43471
 HOSTNAME = localhost
-#OPTIONS = -L DEBUG
+OPTIONS = -L DEBUG
 #DEBUG = YES
-PREFIX = valgrind --tool=memcheck --leak-check=yes
-#BINARY = /home/grothoff/bin/gnunet-service-fs
+#PREFIX = valgrind --tool=memcheck --leak-check=yes
+BINARY = /home/grothoff/bin/gnunet-service-fs
 #PREFIX = xterm -e gdb -x cmd --args 
 
 [testing]
index fb5b9c84c9e410d62f2310a898a7ea089a720aad..a183336ee28ac4eba95f8c607b9badb171ce047f 100644 (file)
@@ -44,7 +44,7 @@
 #include "gnunet-service-fs_indexing.h"
 #include "fs.h"
 
-#define DEBUG_FS GNUNET_NO
+#define DEBUG_FS GNUNET_YES
 
 /**
  * Maximum number of outgoing messages we queue per peer.
@@ -936,6 +936,10 @@ process_migration_content (void *cls,
        GNUNET_DATASTORE_get_next (dsh, GNUNET_YES);
       return;
     }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Retrieved block `%s' of type %u for migration\n",
+             GNUNET_h2s (key),
+             type);
   mb = GNUNET_malloc (sizeof (struct MigrationReadyBlock) + size);
   mb->query = *key;
   mb->expiration = expiration;
@@ -1509,7 +1513,7 @@ transmit_to_peer (void *cls,
                          &pid.hashPubKey,
                          cp);
     }
-#if DEBUG_FS
+#if DEBUG_FS > 3
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Transmitting %u bytes to peer %u\n",
              msize,
@@ -2260,6 +2264,11 @@ struct ProcessReplyClosure
    * How much was this reply worth to us?
    */
   uint32_t priority;
+
+  /**
+   * Did we finish processing the associated request?
+   */ 
+  int finished;
 };
 
 
@@ -2420,7 +2429,7 @@ process_reply (void *cls,
     }
   prq->priority += pr->remaining_priority;
   pr->remaining_priority = 0;
-  if (pr->client_request_list != NULL)
+  if (NULL != pr->client_request_list)
     {
       GNUNET_STATISTICS_update (stats,
                                gettext_noop ("# replies received for local clients"),
@@ -2456,7 +2465,10 @@ process_reply (void *cls,
        }
       GNUNET_break (cl->th != NULL);
       if (pr->do_remove)               
-       destroy_pending_request (pr);           
+       {
+         prq->finished = GNUNET_YES;
+         destroy_pending_request (pr);         
+       }
     }
   else
     {
@@ -2583,12 +2595,19 @@ handle_p2p_put (void *cls,
   prq.type = type;
   prq.expiration = expiration;
   prq.priority = 0;
+  prq.finished = GNUNET_NO;
   GNUNET_CONTAINER_multihashmap_get_multiple (query_request_map,
                                              &query,
                                              &process_reply,
                                              &prq);
   if (GNUNET_YES == active_migration)
     {
+#if DEBUG_FS
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                 "Replicating result for query `%s' with priority %u\n",
+                 GNUNET_h2s (&query),
+                 prq.priority);
+#endif
       GNUNET_DATASTORE_put (dsh,
                            0, &query, dsize, &put[1],
                            type, prq.priority, 1 /* anonymity */, 
@@ -2814,13 +2833,21 @@ process_local_reply (void *cls,
       GNUNET_DATASTORE_get_next (dsh, GNUNET_YES);
       return;
     }
+  prq.type = type;
+  prq.priority = priority;  
+  prq.finished = GNUNET_NO;
+  process_reply (&prq, key, pr);
+  if (prq.finished == GNUNET_YES)
+    return;
+  if (pr->qe == NULL)
+    return; /* done here */
   if ( (type == GNUNET_BLOCK_TYPE_DBLOCK) ||
        (type == GNUNET_BLOCK_TYPE_IBLOCK) ) 
     {
-      if (pr->qe != NULL)
-       GNUNET_DATASTORE_get_next (dsh, GNUNET_NO);
+      GNUNET_DATASTORE_get_next (dsh, GNUNET_NO);
+      return;
     }
-  else if ( (pr->client_request_list == NULL) &&
+  if ( (pr->client_request_list == NULL) &&
        ( (GNUNET_YES == test_load_too_high()) ||
         (pr->results_found > 5 + 2 * pr->priority) ) )
     {
@@ -2832,14 +2859,10 @@ process_local_reply (void *cls,
                                gettext_noop ("# processing result set cut short due to load"),
                                1,
                                GNUNET_NO);
-      if (pr->qe != NULL)
-       GNUNET_DATASTORE_get_next (dsh, GNUNET_NO);
+      GNUNET_DATASTORE_get_next (dsh, GNUNET_NO);
+      return;
     }
-  else if (pr->qe != NULL)
-    GNUNET_DATASTORE_get_next (dsh, GNUNET_YES);
-  prq.type = type;
-  prq.priority = priority;  
-  process_reply (&prq, key, pr);
+  GNUNET_DATASTORE_get_next (dsh, GNUNET_YES);
 }
 
 
@@ -3062,7 +3085,7 @@ handle_p2p_get (void *cls,
                                gettext_noop ("# requests dropped due TTL underflow"),
                                1,
                                GNUNET_NO);
-      /* integer underflow => drop (should be very rare)! */
+      /* integer underflow => drop (should be very rare)! */      
       GNUNET_free (pr);
       return GNUNET_OK;
     } 
index 6c44f8e2f2e979afe26478c22315b2af4a5cad7f..39999be75da521ab4c5e7b29527d85b8f8219f98 100644 (file)
@@ -40,7 +40,7 @@
 #include "gnunet-service-fs_indexing.h"
 #include "fs.h"
 
-#define DEBUG_FS GNUNET_NO
+#define DEBUG_FS GNUNET_YES
 
 /**
  * In-memory information about indexed files (also available
@@ -367,6 +367,13 @@ GNUNET_FS_handle_index_start (void *cls,
   ii->filename = (const char*) &ii[1];
   memcpy (&ii[1], fn, slen);
   ii->file_id = ism->file_id;  
+#if DEBUG_FS
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Received `%s' message for file `%s'\n",
+             "START_INDEX",
+             ii->filename);
+#endif
+
   ii->tc = GNUNET_SERVER_transmit_context_create (client);
   mydev = 0;
   myino = 0;
@@ -610,8 +617,9 @@ GNUNET_FS_handle_on_demand_block (const GNUNET_HashCode * key,
                                        sizeof (ndata)))) )
     {
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                 _("Could not access indexed file `%s' at offset %llu: %s\n"),
+                 _("Could not access indexed file `%s' (%s) at offset %llu: %s\n"),
                  GNUNET_h2s (&odb->file_id),
+                 fn,
                  (unsigned long long) off,
                  STRERROR (errno));
       if (fh != NULL)
index 9f717b2e0720c36777327558e2a3c76c93038aa8..84a03a3c0f9ecb16b3f5bc655a60419073e428b7 100644 (file)
@@ -36,7 +36,7 @@ HOSTNAME = localhost
 [fs]
 PORT = 42471
 HOSTNAME = localhost
-#DEBUG = YES
+# DEBUG = YES
 
 [testing]
 WEAKRANDOM = YES
index 7e3e02c7626a9b1c4a020a6f41f7e98c5787e8bc..92ac44dcc297fdc48caa32e8781f3b31f51648c5 100644 (file)
@@ -26,7 +26,7 @@
 #include "platform.h"
 #include "fs_test_lib.h"
 
-#define VERBOSE GNUNET_NO
+#define VERBOSE GNUNET_YES
 
 /**
  * File-size we use for testing.