IMHO, the whole dlr approach should be refactored to work in a dual "memory/storage" mode.

On my hypothetic view, DLR's would be looked at in memory first, and if it's not found it would be looked at the storage.

With an approach like this, if the storage fails, DLR's would be still kept in memory. The DB connection would be retried of course, but DLR's wouldn't fail (they'd be lost if kannel is shutdown and the DB is failing of course).

An option for a file-based storage would be possible as well, avoiding the dependency on an external DB engine for DLR's.

Opinions?

Regards,
--
Alejandro Guerrieri
[email protected]



On 28/07/2009, at 16:31, Mathieu Bruneau wrote:

On Tue, Jul 28, 2009 at 3:32 AM, Alexander Malysh <[email protected]> wrote:
Hi,

I don't think there is something to fix. Kannel checks connection before using it and then try to reconnect if needed. If your mysql instance is not allowing to connect anymore then kannel has only 2 options:
1) panic, this is what we doing now
2) try to connect in a loop with some timeout and if reconnect was not successfull panic. timeout should not be too big becuase otherwise SMSC will timeout PDU and try to resend it.

If you would like to fix this somehow then option (2) is to go.

Thanks,
Alex


Interesting, if you can't store the DLR, maybe you should time it out and so that the SMSC try it again later ? Just like a mail server would do... However I see it coming, that some people would want to ignore DLR and just accept the messages anyway.

--
Math
aka ROunofF

[email protected]

Reply via email to