Re: Kannel not load balancing after restart and messages get stuck inqueue
"Nikos Balkanas" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <006e01c9e928$07d45790$02b2a8c0@tardis> |
Dear Alvaro, I just managed to finish with my responsibilities, not on April 10, as I was hoping. Meanwhile, I haven't heard from you in a while, and I hope you are enjoying your vacations. Here is a patch to gw/bearerbox.c and gw/bb_smscconn.c, that doesn't start the sms_router, until all smscs (except the FAKE) are ACTIVE. If I am not mistaken, bearerbox will not start unless all smscs are available. So this is inline with this philosophy. I have tested it to the extend that it doesn't break anything, please let me know if it solves your problem. BR, Nikos ----- Original Message ----- From: "Alvaro Cornejo" <[email protected]> To: "Nikos Balkanas" <[email protected]> Sent: Tuesday, March 31, 2009 4:56 PM Subject: Re: Kannel not load balancing after restart and messages get stuck inqueue Hi Nikos No problem. I undestand we are on a "best effort support XD" and this is not a critical issue. Thanks Alvaro |-----------------------------------------------------------------------------------------------------------------| EnvΓƒΒe y Reciba Datos y mensajes de Texto (SMS) hacia y desde cualquier celular y Nextel en el Perú, México y en mas de 180 paises. Use aplicaciones 2 vias via SMS y GPRS online Visitenos en www.perusms.NET www.smsglobal.com.mx y www.pravcom.com 2009/3/31 Nikos Balkanas <[email protected]>: > Hi Alvaro, > > Thanx for reminding me. Unfortunately I am still working very hard on my > project. I will be finished by the 10th of April. Sorry about that and I > hope I am not causing you trouble. I put a reminder on my PC not to > forget. > > BR, > Nikos > > ----- Original Message ----- From: "Alvaro Cornejo" > <[email protected]> > To: "Nikos Balkanas" <[email protected]>; "kannel users" > <[email protected]> > Sent: Tuesday, March 31, 2009 10:17 AM > Subject: Re: Kannel not load balancing after restart and messages get > stuck > inqueue > > > Hi Nikos > > Had you chance to review this? > > Regards > > Alvaro > |-----------------------------------------------------------------------------------------------------------------| > EnvΓ“ÂΒe y Reciba Datos y mensajes de Texto (SMS) hacia y desde cualquier > celular y Nextel > en el PerΓΒ“ΓΒ, MΓ“©xico y en mas de 180 paises. Use aplicaciones 2 vias > via > SMS y GPRS online > Γ‚ Γ‚ Γ‚ Γ‚ Γ‚ Γ‚ Visitenos en www.perusms.NET www.smsglobal.com.mx y > www.pravcom.com > > > > 2009/3/10 Nikos Balkanas <[email protected]>: >> >> Hi, >> >> I am working on something very important right now. Could you give me a >> ping >> in 2 weeks or so, if no one has addressed it? >> >> Thanx, >> Nikos >> ----- Original Message ----- From: "Alvaro Cornejo" >> <[email protected]> >> To: "Nikos Balkanas" <[email protected]> >> Cc: "seikath" <[email protected]>; "kannel users" <[email protected]> >> Sent: Wednesday, March 11, 2009 5:29 AM >> Subject: Re: Kannel not load balancing after restart and messages get >> stuck >> inqueue >> >> >> Hi Nikos >> >> for 1... still looking at data/logs... nothing so far. >> >> for 2... You are right: >> >> SMSC connections: >> id1 ΓΒ’ ΓΒ’ AT2[id1] (online 323s, rcvd 48, sent 48, failed 0, queued 265 >> msgs) >> id2 ΓΒ’ ΓΒ’ AT2[id2] (online 314s, rcvd 0, sent 0, failed 0, queued 0 msgs) >> id3 ΓΒ’ ΓΒ’ AT2[id3] (online 314s, rcvd 0, sent 0, failed 0, queued 0 msgs) >> id4 ΓΒ’ ΓΒ’ AT2[id4] (online 314s, rcvd 0, sent 0, failed 0, queued 0 msgs) >> id5 ΓΒ’ ΓΒ’ AT2[id5] (online 314s, rcvd 0, sent 0, failed 0, queued 0 msgs) >> >> All messages in queue for smsc-id "id_op1" were asigned to the 1st >> available smsc that has allowed-smsc=id_op1 >> >> I'm not developer but think this behavior shall be modified so kannel >> will be able to maximize/optimize its resources available. Some sort >> of "recalculation of ΓΒ’ the better route" for messages each x time >> >> Regards >> >> Alvaro >> >> >> >> |-----------------------------------------------------------------------------------------------------------------| >> EnvΓΒΓΆΒ€ΒΓΒ’Γ‚Βe y Reciba Datos y mensajes de Texto (SMS) hacia y desde >> cualquier >> celular y Nextel >> en el PerΓΒΓΆΒ€ΒΓΒ , MΓΒΓΆΒ€ΒΓ’©xico y en mas de 180 paises. Use >> aplicaciones 2 vias >> via >> SMS y GPRS online >> ΓΒ’ ΓΒ’ ΓΒ’ ΓΒ’ ΓΒ’ ΓΒ’ Visitenos en www.perusms.NET www.smsglobal.com.mx y >> www.pravcom.com >> >> >> >> On Tue, Mar 10, 2009 at 8:57 PM, Nikos Balkanas <[email protected]> >> wrote: >>> >>> Hi, >>> >>> These are some heavy questions dude. >>> >>> (1) SMS shoudn't get stuck like that so that they require restart. >>> Anything >>> in the logs? >>> >>> (2) I could speculate why this happens, but without looking at the >>> source >>> code it would be guesswork. My guess would be that it involves the >>> timing >>> needed at startup to designate SMScs as active. Probably this is done by >>> way >>> of configuration order (i.e. id1, id2, etc.). The first active one gets >>> the >>> queue. Bearerbox router checks in every 30". >>> >>> BR, >>> Nikos >>> >>> ----- Original Message ----- From: "Alvaro Cornejo" >>> <[email protected]> >>> To: "seikath" <[email protected]> >>> Cc: "kannel users" <[email protected]> >>> Sent: Wednesday, March 11, 2009 3:41 AM >>> Subject: Re: Kannel not load balancing after restart and messages get >>> stuck >>> inqueue >>> >>> >>> No, I'm using mysql for dlr storage since otherwise dlr are lost on >>> kannel restart >>> >>> >>> >>> |-----------------------------------------------------------------------------------------------------------------| >>> EnvΓΒ Γ’½e y Reciba Datos y mensajes de Texto (SMS) hacia y desde >>> cualquier >>> celular y Nextel >>> en el PerΓΒ Γ‚ , MΓΒ ΓΒ‰xico y en mas de 180 paises. Use aplicaciones 2 >>> vias >>> via >>> SMS y GPRS online >>> ΓΒ’ ΓΒ’ ΓΒ’ ΓΒ’ ΓΒ’ ΓΒ’ Visitenos en www.perusms.NET >>> www.smsglobal.com.mx y >>> www.pravcom.com >>> >>> >>> >>> On Tue, Mar 10, 2009 at 8:15 PM, seikath <[email protected]> wrote: >>>> >>>> Hi, >>>> >>>> I am not aware of the store_tools. >>>> Anyway, I assume you use default kannel store file >>>> instead of db dlr storage, correct ? >>>> >>>> >>>> >>>> Alvaro Cornejo wrote: >>>>> >>>>> Hi List >>>>> >>>>> >>>>> I've found the following 2 isues: >>>>> >>>>> 1) I have several modems for the same operators 10 for op1 and 5 for >>>>> op2. For some reason, some messages get stuck into kannel queue and >>>>> are not sent to smsc without restarting kannel. I've used Alex >>>>> store_tools and verify messages are in queue. All messages are sent >>>>> using the same code and use AT-SMSCs. >>>>> >>>>> 2) When I restart kannel QUEUED messages are sent through only one >>>>> at-smsc even if messages have a destination smsc-id specified in >>>>> sendsms url call >>>>> >>>>> This is an snippet of the config I have: >>>>> >>>>> smsc-id = id1 >>>>> allowed-smsc = id1,id_op1 >>>>> >>>>> smsc-id = id2 >>>>> allowed-smsc = id2,id_op1 >>>>> >>>>> smsc-id = id3 >>>>> allowed-smsc = id3,id_op1 >>>>> >>>>> smsc-id = id4 >>>>> allowed-smsc = id4,id_op2 >>>>> >>>>> smsc-id = id5 >>>>> allowed-smsc = id5,id_op2 >>>>> >>>>> etc... >>>>> >>>>> Note there is no smsc defined with smsc-id=id_op1 nor id_op2 in config >>>>> file. >>>>> >>>>> When sending the messages I use &smsc-id=id_op1 or id_op2 into url so >>>>> kannel load-balance through the smsc of corresponding operator and >>>>> send the message. This works fine until I restart kannel. >>>>> >>>>> After kannel reset, All QUEUED messages are sent through ONLY ONE of >>>>> the smsc without load-balancing between smsc even though there are >>>>> hundreds of queued messages; however if, at the same time, I send >>>>> messages to any of the id_op1 or id_op2, this new messages are >>>>> correctly load-balanced between smsc-at >>>>> >>>>> I use: >>>>> >>>>> Kannel bearerbox version `1.4.3'. Build `Feb 13 2009 17:32:59', >>>>> compiler `4.1.2 20070626 (Red Hat 4.1.2-13)'. System Linux, release >>>>> 2.6.20-1.2962.fc6, version #1 SMP Tue Jun 19 19:27:14 EDT 2007, >>>>> machine i686. IP 10.10.5.2. Libxml version 2.6.29. Using OpenSSL >>>>> 0.9.8b 04 May 2006. Compiled with MySQL 5.0.27, using MySQL 5.0.27. >>>>> Using native malloc. >>>>> >>>>> >>>>> Any ideas? >>>>> >>>>> >>>>> Regards >>>>> >>>>> Alvaro >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> |-----------------------------------------------------------------------------------------------------------------| >>>>> EnvΓΒ Γ’½e y Reciba Datos y mensajes de Texto (SMS) hacia y desde >>>>> cualquier >>>>> celular y Nextel >>>>> en el PerΓΒ Γ‚ , MΓΒ ΓΒ‰xico y en mas de 180 paises. Use aplicaciones >>>>> 2 vias >>>>> via >>>>> SMS y GPRS online >>>>> Visitenos en www.perusms.NET www.smsglobal.com.mx y >>>>> www.pravcom.com >>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > >
kannel.diff
(application/octet-stream, 2 KB)
Index: gw/bb_smscconn.c
===================================================================
RCS file: /home/cvs/gateway/gw/bb_smscconn.c,v
retrieving revision 1.101
diff -a -u -r1.101 bb_smscconn.c
--- gw/bb_smscconn.c 6 May 2009 18:47:34 -0000 1.101
+++ gw/bb_smscconn.c 9 Jun 2009 17:20:13 -0000
@@ -131,7 +131,7 @@
static regex_t *white_list_regex;
static regex_t *black_list_regex;
-static long router_thread = -1;
+extern long router_thread;
/* message resend */
static long sms_resend_frequency;
@@ -586,6 +586,22 @@
*
*/
+void start_router()
+{
+ int i, len = gwlist_len(smsc_list);
+ SMSCConn *conn;
+
+ for (i = 0; i < len; i++)
+ {
+ conn = gwlist_get(smsc_list, i);
+ if (!(conn->status == SMSCCONN_ACTIVE &&
+ octstr_str_compare(conn->name, "FAKE") == 0))
+ return;
+ }
+ if ((router_thread = gwthread_create(sms_router, NULL)) == -1)
+ panic(0, "Failed to start a new thread for SMS routing");
+}
+
int smsc2_start(Cfg *cfg)
{
CfgGroup *grp;
Index: gw/bearerbox.c
===================================================================
RCS file: /home/cvs/gateway/gw/bearerbox.c,v
retrieving revision 1.169
diff -a -u -r1.169 bearerbox.c
--- gw/bearerbox.c 12 Jan 2009 16:46:56 -0000 1.169
+++ gw/bearerbox.c 9 Jun 2009 17:20:14 -0000
@@ -140,6 +140,8 @@
static time_t start_time;
volatile sig_atomic_t restart = 0;
+/* Outgoing sms router */
+long router_thread = -1;
/* to avoid copied code */
@@ -639,7 +641,6 @@
info(0, "Gateway is now ISOLATED by startup arguments");
gwlist_remove_producer(suspended);
} else {
- smsc2_resume();
gwlist_remove_producer(suspended);
gwlist_remove_producer(isolated);
}
@@ -657,6 +658,9 @@
gwthread_sleep(10.0);
/* debug("bb", 0, "Main Thread: woken up."); */
+ if (router_thread < 0 && bb_status != BB_ISOLATED)
+ start_router();
+
if (bb_todo == 0) {
continue;
}