even nicer queue size optimization: insert-at-tail if we can instantly tell, always
authorChristian Grothoff <christian@grothoff.org>
Thu, 23 Feb 2017 14:33:51 +0000 (15:33 +0100)
committerChristian Grothoff <christian@grothoff.org>
Thu, 23 Feb 2017 14:33:51 +0000 (15:33 +0100)
src/datastore/datastore_api.c

index b2fc189475a5d6851e5c3021bf36a600ff6d3b5f..916e6acaef930121af9a4bfa04f0be4c72437d35 100644 (file)
@@ -498,19 +498,17 @@ make_queue_entry (struct GNUNET_DATASTORE_Handle *h,
   struct GNUNET_DATASTORE_QueueEntry *pos;
   unsigned int c;
 
-  if ( (h->queue_size == max_queue_size) &&
+  if ( (NULL != h->queue_tail) &&
        (h->queue_tail->priority >= queue_priority) )
   {
-    GNUNET_STATISTICS_update (h->stats,
-                              gettext_noop ("# queue overflows"),
-                              1,
-                              GNUNET_NO);
-    GNUNET_MQ_discard (env);
-    return NULL;
+    c = h->queue_size;
+    pos = NULL;
+  }
+  else
+  {
+    c = 0;
+    pos = h->queue_head;
   }
-
-  c = 0;
-  pos = h->queue_head;
   while ( (NULL != pos) &&
           (c < max_queue_size) &&
           (pos->priority >= queue_priority) )