HTTP retries and queue delay (2)

Juan Ignacio Germano <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Hi all. Doing some tests for the last couple of weeks, one of the
things I have noticed is the one Juan Fernández noticed some time ago,
and wrote about here in the dev list:

http://www.mail-archive.com/[email protected]/msg04895.html

which is that if a number of requests that had been queued in
smsbox_http_requests, each time the thread is awaken it only start the
processing of one the pending requests. I believe it would be best if
a number of requests would be processed each time, so I've added a new
configuration directive for the smsbox group, bulk-retry-q.

diff -ub -r original/gateway/gw/smsbox.c bulk/gateway/gw/smsbox.c
--- original/gateway/gw/smsbox.c        Mon Sep 19 19:07:32 2005
+++ bulk/gateway/gw/smsbox.c    Wed Oct 19 16:37:35 2005
@@ -91,6 +91,7 @@
 /* Defaults for the HTTP request queueing inside http_queue_thread */
 #define HTTP_MAX_RETRIES    0
 #define HTTP_RETRY_DELAY    10 /* in sec. */
+#define BULK_RETRY_Q        10 /* How many should we move to incoming */

 /* have we received restart cmd from bearerbox? */
 volatile sig_atomic_t restart = 0;
@@ -139,6 +140,8 @@
 static Dict *client_dict = NULL;
 static List *sendsms_reply_hdrs = NULL;

+static long bulk_retry_q = BULK_RETRY_Q;
+
 /***********************************************************************
  * Communication with the bearerbox.
  */
@@ -1040,6 +1043,7 @@
     Octstr *req_body;
     unsigned long retries;
     int method;
+    long bulk_i;

     while ((id = gwlist_consume(smsbox_http_requests)) != NULL) {
         /*
@@ -1053,6 +1057,8 @@
         debug("sms.http",0,"HTTP: Queue contains %ld outstanding requests",
               gwlist_len(smsbox_http_requests));

+       bulk_i = 0;
+       do{
         /*
          * Get all required HTTP request data from the queue and reconstruct
          * the id pointer for later lookup in url_result_thread.
@@ -1074,6 +1080,7 @@
         octstr_destroy(req_url);
         http_destroy_headers(req_headers);
         octstr_destroy(req_body);
+       }while((++bulk_i < bulk_retry_q) && ((id =
gwlist_consume(smsbox_http_requests)) != NULL));
     }
 }

@@ -3270,6 +3277,7 @@
     Octstr *http_proxy_exceptions_regex = NULL;
     int ssl = 0;
     int lf, m;
+    long bulk_q;

     bb_port = BB_DEFAULT_SMSBOX_PORT;
     bb_ssl = 0;
@@ -3291,6 +3299,9 @@
     cfg_get_bool(&bb_ssl, grp, octstr_imm("smsbox-port-ssl"));
 #endif /* HAVE_LIBSSL */

+    cfg_get_integer(&bulk_q, grp, octstr_imm("bulk-retry-q"));
+    if((bulk_q > 0))
+       bulk_retry_q = bulk_q;
     cfg_get_integer(&http_proxy_port, grp, octstr_imm("http-proxy-port"));

     http_proxy_host = cfg_get(grp,
diff -ub -r original/gateway/gwlib/cfg.def bulk/gateway/gwlib/cfg.def
--- original/gateway/gwlib/cfg.def      Tue Sep 20 23:01:22 2005
+++ bulk/gateway/gwlib/cfg.def  Wed Oct 19 16:37:58 2005
@@ -268,6 +268,7 @@
     OCTSTR(white-list-regex)
     OCTSTR(black-list-regex)
     OCTSTR(immediate-sendsms-reply)
+    OCTSTR(bulk-retry-q)
 )

Cheers!
--
Juan
PS: Right subject this time, I'm sorry. Previous mail should have had
a different one.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.