12 dec 2011 kl. 11:26 skrev Daniel-Constantin Mierla:

> Hello,
> 
> On 12/12/11 10:49 AM, Olle E. Johansson wrote:
>> 12 dec 2011 kl. 10:33 skrev Daniel-Constantin Mierla:
>> 
>>> Hello,
>>> 
>>> On 12/10/11 11:36 AM, Olle E. Johansson wrote:
>>>> 9 dec 2011 kl. 18:54 skrev Spencer Thomason:
>>>> 
>>>>> Hello all,
>>>>> Is it possible to configure Kamailio to reply to a request with a 503 if 
>>>>> it cannot connect to a necessary database for the operation?
>>>>> 
>>>>> I.e.  Kamailio cannot connect to the database, when a REGISTER comes in 
>>>>> and userloc can't find the credentials (due to DB failure), respond with 
>>>>> a 503.  The requesting endpoint can then fail over properly.  The same 
>>>>> behaviour would be desired for other modules as well, i.e. aliasdb.
>>>>> 
>>>>> 
>>>>> I noticed using 3.1.5 that it simply does not authorize the user.
>>>>> 
>>>>> 
>>>> I have been thinking about this as well. We could implement a db_ping 
>>>> function so we could test in the routing script before
>>>> calling functions that use the DB. It's harder with stuff that happens in 
>>>> the background, like ACC and SIPTRACE. I don't know
>>>> what happens with them if the database fails.
>>> one option would be to set a config env variable, like db_error, which is 
>>> set by the db modules on error. Then can be checked in the config and act 
>>> accordingly. This will require touching the db modules.
>>> 
>>> Alternative is to propagate some return codes up to config file, but this 
>>> will require changes in all modules interacting with database, including 
>>> the db modules.
>> Great. I think a db_ping which forces a test, a db_status variable that 
>> shows the result of the last database operation is a good start.
> yes, db_ping() is good for interaction from config file. I thought of 
> db_status more for the other functions that use db behind (like auth_db).
> 
> I wonder if each sql server has this ping capability -- mysql lib offers 
> mysql_ping() (which is used in db_mysql module), iirc, postgress has as well 
> although not used in db_postgres (afaik). If all, ping function may be 
> exported via db interface and offered to config from sqlops, where is easy to 
> provide connection id.
I'm sure there's one way or another to implement a ping. Just query for 
something non-important and make sure you get some kind of response.

> 
> When ping is not offered by library, then maybe never fail query like 'select 
> count(*) from version' can be used - this should be usable even now with 
> sqlops.
Exactly.

If I take it right we can start with implementing something in the db layer. 
After that implement it in the db drivers. If the driver doesn't support it, we 
need a response code saying "Not yet supported by db driver".

/O
> 
> Cheers,
> Daniel
> 
>> 
>> The return code stuff is a more long term issue. I'll try to allocate time 
>> to see if I can get somewhere with these two. If I need help, this list will 
>> now :-)
>> 
>> /O
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users@lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
> 
> -- 
> Daniel-Constantin Mierla -- http://www.asipto.com
> http://linkedin.com/in/miconda -- http://twitter.com/miconda

---
* Olle E Johansson - o...@edvina.net
* Cell phone +46 70 593 68 51, Office +46 8 96 40 20, Sweden




_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to