Hi John,

Following our chat on IRC, I would like to update also the list here.

As said, currently we are looking into the possibility to extend the mechanism of error handling in OpenSIPS - the idea is, instead of keep testing all script functions for error cases, we should have an automatic way of catching and handling errors from script.

Testing functions (in script) one by one is not a nice an scalable approach, considering that all functions may return:
   - true for success
   - false for failure in processing
   - false for internal error
So for each function we need to handle by hand all possible return codes to catch the errors. I think this is not an option.

What I want to explore (topic for next week IRC meeting) is a generic system of catching and handling internal errors. Options are: 1) extending the error route to be trigger not only by parsing errors, but also by other classes of internal errors (memory stuff, DB stuff, etc) 2) adding a "try {} catch ; " instruction to divert execution to anther route when an internal error is triggered.


Regards,
Bogdan


John Khvatov wrote:
Hello all.

I wrote a small patch for avpops module:
http://dev.sgu.ru/pub/0001-avp_db_query-improved-error-reporting.patch

Current implementation of avp_db_query returns -1 on internal error or empty 
result. Thus, current function interface does not allow to write script with 
storage error handling.

Patched avp_db_query() returns:
-3 on internal error
-1 on empty result
1 on success

With patched avp_db_query() we can write following logic in opensips.cfg:

avp_db_query("SELECT 1 WHERE false", "$avp(s:name)")
if ($retcode == -3) {
    xlog("Error while querying database. Handle error.");
}
else if ($retcode == -1) {
    xlog("Handle empty result.");
}
else {
    xlog("Handle result");
}

I've tested this patch with 1.6.4.

Please, review my patch and apply to upstream.


--
Bogdan-Andrei Iancu
OpenSIPS eBootcamp - 28th February 2011
OpenSIPS solutions and "know-how"


_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to