Hmm, OK. Interesting. I've reverted to the SVN head of sqlbox and configured
the following:

group = smsbox
bearerbox-host = localhost
smsbox-id = sqlbox

group = smsbox-route
smsbox-id = sqlbox

group = sqlbox
id = sqlbox
smsbox-id = sqlbox
bearerbox-port = 13100
bearerbox-host = localhost
# smsbox-port = 13200
sql-log-table = smsgw_kannel_sms_result
sql-insert-table = smsgw_kannel_sms_queue
log-file = /usr/local/kannel/log/sqlbox.log
log-level = 0

Now, I see the following in bearerbox.log:

2010-08-10 00:53:11 [1691] [13] DEBUG: boxc_receiver: sms received
2010-08-10 00:53:11 [1691] [13] DEBUG: send_msg: sending msg to boxc:
<sqlbox>
2010-08-10 00:53:11 [1691] [14] DEBUG: send_msg: sending msg to boxc:
<sqlbox>
2010-08-10 00:53:11 [1691] [14] DEBUG: boxc_sender: sent message to
<127.0.0.1>
2010-08-10 00:53:17 [1691] [14] DEBUG: send_msg: sending msg to boxc:
<sqlbox>
2010-08-10 00:53:17 [1691] [14] DEBUG: boxc_sender: sent message to
<127.0.0.1>

The lines at 00:53:11 are written when the MT is sent out. The lines at
00:53:17 are written when the DLR arrives.

And... unfortunately the queuing is back - here's the relevant status
output:

SMS: received 0 (0 queued), sent 2 (0 queued), store size 4
SMS: inbound (0.00,0.00,0.00) msg/sec, outbound (0.01,0.01,0.01) msg/sec

DLR: received 4, sent 0
DLR: inbound (0.02,0.01,0.01) msg/sec, outbound (0.00,0.00,0.00) msg/sec
DLR: 262 queued, using mysql storage

Box connections:
    smsbox:sqlbox, IP 127.0.0.1 (4 queued), (on-line 0d 0h 4m 39s)

I still chalk the queuing up to a missing ACK from sqlbox - the following
line is missing from the logs:
DEBUG: boxc_receiver: got ack

When I had smsbox running and calling a dummy URL to get rid of DLRs, that
ack would appear each time a message (MT or DLR) was sent to sqlbox.

So, I'm still convinced that the DLR routing to sqlbox is happening, and
that bearerbox is just getting upset as it gets no ACK from sqlbox. My
hypothesis regarding the "WARNING: smsbox_list empty!" message is that
bearerbox isn't getting a smsbox registration message (as sqlbox doesn't
generate one, and relies on the non-existent smsbox to do so), but is still
routing both MT notifications and DLRs to sqlbox as it's been instructed to
do. I'd be happy to be proved wrong though!

Thanks,
Toby.


-----Original Message-----
From: Nikos Balkanas [mailto:[email protected]] 
Sent: Tuesday, 10 August 2010 12:31 AM
To: Toby Phipps; 'Rene Kluwen'; [email protected]
Subject: Re: Life without smsbox

Nope. What you see is entirely different. send_msg is not sending the DLR to

sqlbox, but rather responding an ACK to the received MT. I don't know if 
there is a problem with sqlbox, but I bet I would have heard about it if it 
were, but revert to the svn version and try smsbox-route. The warning you 
get is very crucial, you are missing incoming DLRs. You need to fix that, 
before anything else.

BR,
Nikos
----- Original Message ----- 
From: "Toby Phipps" <[email protected]>
To: "'Nikos Balkanas'" <[email protected]>; "'Rene Kluwen'" 
<[email protected]>; <[email protected]>
Sent: Monday, August 09, 2010 7:24 PM
Subject: RE: Life without smsbox


> Hi Nikos,
>
> I'll certainly try what you suggest, but I'm not quite sure that's the
> issue. Although bearerbox may think it doesn't have any smsboxes 
> connected,
> it's still happily routing messages to sqlbox - here's a brief extract 
> from
> the bearerbox log:
>
> 2010-08-09 23:46:52 [24133] [4] WARNING: smsbox_list empty!
> 2010-08-09 23:46:52 [24133] [4] DEBUG: Thread 4
> (gw/bb_boxc.c:sms_to_smsboxes) terminates.
> 2010-08-09 23:46:52 [24133] [14] DEBUG: send_msg: sending msg to boxc:
> <sqlbox>
>
> sqlbox is also getting each message as intended, and I can see it arriving
> in its log, and I can also see bearerbox queuing them in the status 
> output.
>
>    smsbox:sqlbox, IP 127.0.0.1 (110 queued), (on-line 0d 0h 0m 50s)
>
> The piece that's missing really seems to be the ACK from sqlbox to 
> bearerbox
> for each DLR message it receives. bearerbox is successfully sending each 
> DLR
> to sqlbox, and sqlbox is successfully logging it to the DB. However, as
> sqlbox is sending no ACK back, bearerbox has no way of knowing that sqlbox
> received the DLR and is therefore queuing it locally, and periodically
> re-sending to sqlbox.
>
> Now I've read the sqlbox code, it seems that it's a thin shell and doesn't
> implement ANY of the ACK processing that smsbox does. It simply logs to 
> the
> DB, passes messages to smsbox and hopes that smsbox will pass it back an 
> ACK
> that it can then pass to bearerbox so that the loop can be closed. 
> However,
> without an smsbox connection, sqlbox is simply processing and dumping each
> message from bearerbox, leading to the unnecessary queuing in bearerbox.
>
> Anyway, that's what I've worked out from a few hours of looking through 
> the
> code. This is nothing compared to the years that everyone else has with 
> it,
> and I'm happy to be proved wrong!
>
> Just as an aside, between the time I sent my earlier email and I saw your
> response, I implemented a very rudimentary #2 (ACK in sqlbox) and it seems
> to have resolved the issue. All I'm doing is checking on each message
> receipt inside sqlbox to see if a smsbox is connected. If so then nothing
> changes - if not, then sqlbox returns the successful ACK.
>
> Thanks,
> Toby
>
> -----Original Message-----
> From: Nikos Balkanas [mailto:[email protected]]
> Sent: Tuesday, 10 August 2010 12:08 AM
> To: Toby Phipps; 'Rene Kluwen'; [email protected]
> Subject: Re: Life without smsbox
>
> Hi,
>
> You are missing an smsbox-route group. Once you configure that, your DLR
> problem will disappear. You need to set an smsbox-id in your smsbox group 
> (I
>
> remeber you already have a dummy one), that corresponds to the id in your
> sqlbox. Then configure that to your smsbox-route group. Right now your bb 
> is
>
> getting the DLRs, but doesn't know where to send them. Granted it is 
> pretty
> lame to have only 1 smsbox connected to it, and not know what to do with 
> it.
>
> It could be fixed sometime.
>
> Do not proceed with (2).
>
> BR,
> Nikos
> ----- Original Message ----- 
> From: "Toby Phipps" <[email protected]>
> To: "'Nikos Balkanas'" <[email protected]>; "'Rene Kluwen'"
> <[email protected]>; <[email protected]>
> Sent: Monday, August 09, 2010 6:17 PM
> Subject: RE: Life without smsbox
>
>
>> Hi Nikos,
>>
>> Thanks again for the feedback. You hit the nail on the head - I am seeing
>> "WARNING: smsbox_list empty!" throughout the bearerbox log. Looks like
>> running sqlbox alone is not enough to truly emulate a smsbox.
>>
>> So, I delved into the source for sqlbox, and from what I can see, it has
>> no
>> ACK response logic at all. It receives the DLR (or MO) from bearerbox,
>> writes it to the DB and then passes it to a connected smsbox. It appears
>> to
>> rely on smsbox to generate the ACK - there's logic in there to pass 
>> smsbox
>> messages back to bearerbox (which I assume would include the ACKs), but
>> nothing to handle the situation where there is no smsbox connected. In
>> this
>> case, the message gets written to the DB then simply dropped, hence the
>> queuing in bearerbox that I'm seeing.
>>
>> So, I'm looking at two options and would very much appreciate advice on
>> which one would be most appropriate:
>>
>> 1. Configure a "dummy" smsbox to receive/ACK the messages from sqlbox but
>> do
>> nothing else them. Not sure if I can configure smsbox to do this (I'll 
>> hit
>> the doc), whether I'll need to patch it to provide a "ACK and drop" mode,
>> or
>> whether I should have it call a dummy destination to avoid the patching.
>>
>> 2. Enhance sqlbox to generate its own ACK if it doesn't have a connected
>> smsbox to pass the MO/DLR onto.
>>
>> Any suggestions? If not, I'll probably start on #2 as it seems much
>> cleaner
>> to me and avoids the unnecessary overhead of a dummy smsbox process and
>> associated IPC. Who is the appropriate sqlbox owner that I should run
>> these
>> changes by? I'm sure I'm not the only one that has no need for smsbox.
>>
>> Thanks,
>> Toby.
>>
>> -----Original Message-----
>> From: Nikos Balkanas [mailto:[email protected]]
>> Sent: Monday, 9 August 2010 2:17 AM
>> To: Toby Phipps; 'Rene Kluwen'; [email protected]
>> Subject: Re: Life without smsbox
>>
>> Hi,
>>
>> The only way for bearerbox to remove the DLR from store is to receive an
>> upstream ACK (smsbox or sqlbox). That is the architectural spec. If this
>> is
>> not happenning, sqlbox has a bug. You could check for that in maximum
>> detail
>>
>> bb (and sqlbox) logs. If there is a problem with routing or boxc ids in
>> bb,
>> you should get a lot of warnings like "Warning: smsbox-list empty!", 
>> which
>> will also build up DLR store queue.
>>
>> BR,
>> Nikos
>>
>>
>> ----- Original Message ----- 
>> From: "Toby Phipps" <[email protected]>
>> To: "'Rene Kluwen'" <[email protected]>; <[email protected]>
>> Sent: Sunday, August 08, 2010 3:26 PM
>> Subject: RE: Life without smsbox
>>
>>
>>> Just a follow-up - I also tried setting "smsbox-id = sqlbox" in the
>>> "sqlbox"
>>> section, and sqlbox starts but I get the same results, which is that the
>>> bearerbox store size increments by one for each DLR received, as viewed
>>> in
>>> the status output. For example:
>>>
>>> SMS: received 0 (0 queued), sent 13 (0 queued), store size 85
>>>
>>> Right now, my sqlbox.conf looks like this:
>>>
>>> group = sqlbox
>>> id = sqlbox
>>> smsbox-id = sqlbox
>>> bearerbox-port = 13100
>>> bearerbox-host = localhost
>>> # smsbox-port = 13200
>>> sql-log-table = smsgw_kannel_sms_result
>>> sql-insert-table = smsgw_kannel_sms_queue
>>> log-file = /usr/local/kannel/log/sqlbox.log
>>> log-level = 0
>>>
>>> group = mysql-connection
>>> id = sqlbox
>>> host = localhost
>>> username = <removed>
>>> password = <removed>
>>> database = <removed>
>>> max-connections = 3
>>>
>>> As you can see, the smsbox-port is commented out, meaning that I don't
>>> want
>>> sqlbox to try to talk to smsbox. I've tried with this line commented 
>>> out,
>>> or
>>> uncommented (but pointed to a non-listening port). Both result in the
>>> same
>>> behaviour,
>>>
>>> Any more ideas anyone? I'm about to start delving into the source...
>>>
>>> Thanks,
>>> Toby.
>>>
>>>
>>>
>>
>>
>
> 



Reply via email to