You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@commons.apache.org by je...@apache.org on 2003/09/17 09:04:26 UTC

svn commit: rev 38 - commons/serf/trunk/test

Author: jerenkrantz
Date: Sun Dec 29 23:55:35 2002
New Revision: 38

Modified:
   commons/serf/trunk/test/serf_spider.c
Log:
Cleanup the hash setting so that we only duplicate when we're about to set
it.


Modified: commons/serf/trunk/test/serf_spider.c
==============================================================================
--- commons/serf/trunk/test/serf_spider.c	(original)
+++ commons/serf/trunk/test/serf_spider.c	Sun Dec 29 23:55:35 2002
@@ -81,10 +81,10 @@
 #define SERF_SPIDER_USE_DEFLATE 0
 
 /* The maximal size of our queue */
-#define SERF_SPIDER_QUEUE_SIZE 1000000
+#define SERF_SPIDER_QUEUE_SIZE 10000000
 
 /* The number of concurrent threads we will have running. */
-#define SERF_SPIDER_THREADS 5
+#define SERF_SPIDER_THREADS 20
 
 /* Maximum number of hits we will run per thread. */
 /*#define SERF_SPIDER_LIMIT 1000*/
@@ -129,25 +129,25 @@
     new_uri_len = strlen(new_uri);
     /* Our hash routines aren't thread-safe!  Ick!  */
     apr_thread_mutex_lock(mutex);
-    assert(*new_uri != '\0');
-    new_uri = apr_pstrmemdup(hash_pool, new_uri, new_uri_len);
     if (!apr_hash_get(hash, new_uri, new_uri_len) &&
         (!SERF_SPIDER_DO_NOT_LEAVE_ROOT ||
          strstr(new_uri, root_uri) == new_uri)) {
         apr_status_t status;
+        char *new_uri_copy;
         int tries = 0;
 
-        apr_hash_set(hash, new_uri, new_uri_len, new_uri);
+        new_uri_copy = apr_pstrmemdup(hash_pool, new_uri, new_uri_len);
+        apr_hash_set(hash, new_uri_copy, new_uri_len, new_uri_copy);
 
         do {
+            status = apr_queue_trypush(queue, new_uri_copy);
 
-            status = apr_queue_trypush(queue, new_uri);
             if (status) {
                 if (tries++ > 5 || !APR_STATUS_IS_EAGAIN(status)) {
                     apr_thread_mutex_unlock(mutex);
                     return status;
                 }
-                fprintf(stderr, "Queue full: %s %ld (try #%d)\n", new_uri,
+                fprintf(stderr, "Queue full: %s %ld (try #%d)\n", new_uri_copy,
                         pthread_self(), tries);
                 apr_sleep(apr_time_from_sec(SERF_SPIDER_RAMP_DELAY));
             }