[OpenSIPS-Users] Async DB statement

Bogdan-Andrei Iancu bogdan at opensips.org
Tue Jan 24 09:09:52 EST 2017


Could you please rephrase / detail your question, as I do not understand 
what you are asking.

Thanks,

Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com

On 01/24/2017 03:44 PM, Ahmed Munir wrote:
> Thanks, have been working on this and it is working.
>
> Btw, I would like to know, is there a way to resume route while using 
> async avp_db_query? As currently setting/declaring another async route 
> for DB query, looking for resume route in main routing script.
>
> On Tue, Jan 24, 2017 at 6:45 AM, Bogdan-Andrei Iancu 
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
>     Hi Ahmed,
>
>     Note the $rc holds the return code of the LAST executed
>     statement/instruction/function in the script. In the first case
>     you do it right by saving the ret code of the avp_db_query into a
>     separate variable, so you can use it even later.
>
>     In the sync script, the $rc, when entering the resume route, it
>     will hold the return code of the avp_db_query() function. But the
>     $rc will be changed when doing the xlog(), the if(), etc...So when
>     you do the last xlog(), the $rc will have nothing to do with the
>     avp_db_query(). If you need it later in the script, better save
>     it, as you do in the first example.
>
>     Regards,
>
>     Bogdan-Andrei Iancu
>     OpenSIPS Founder and Developer
>     http://www.opensips-solutions.com <http://www.opensips-solutions.com>
>
>     On 01/20/2017 01:31 AM, Ahmed Munir wrote:
>>     Hi,
>>     Currently I'm trying to use async fucntion for avp_db_query. The
>>     issue I'm facing while using it as not retrieving or returning
>>     correct return code and not execute later part of the routing
>>     script. See old & new DB queries;
>>     Without Async: ---------------------- route[1]{ ...
>>      if($var(Outpluseflag) == 0) {               avp_db_query("SELECT
>>     Outpulse_number,setid FROM Prefix_data where Program_prefix =
>>     '$var(pg_prefix)'", "$avp(outpluse), $avp(trunkid)");
>>                     $var(res) = $retcode; # or you can just use
>>     $retcode!                 xlog("--------- OB Route 1-1 DB fetched
>>     value outpluse -> $avp(outpluse) | trunkid -> $avp(trunkid) |
>>     Return Code: $rc | Var Res: $var(res)-------");                
>>     if ($var(res) > 0) {                           
>>     cache_store("local", "DID_$tU", "$avp(outpluse)", 60);
>>                                cache_store("local", "Trunk_$tU",
>>     "$avp(trunkid)", 60);                 }                 #xlog("DB
>>     fetched value outpluse -> $avp(outpluse) | trunkid ->
>>     $avp(trunkid) | Return Code -> $var(res)");                
>>     xlog("--------- OB Route 1-2 DB fetched value outpluse ->
>>     $avp(outpluse) | trunkid -> $avp(trunkid) | Return Code: $rc |
>>     Var Res: $var(res)-------"); }
>>     } With Async: -------------------
>>     route[1]{
>>     ...
>>     if($var(Outpluseflag) == 0) {      async(avp_db_query("SELECT
>>     Outpulse_number,setid FROM Prefix_data where Program_prefix =
>>     '$var(pg_prefix)'", "$avp(outpluse), $avp(trunkid)"),ob_route_1);
>>     } }
>>     route[ob_route_1]{         xlog("--------- OB Route 1-1 DB
>>     fetched value outpluse -> $avp(outpluse) | trunkid ->
>>     $avp(trunkid) | Return Code: $rc-------");         if ($rc > 0) {
>>                    cache_store("local", "DID_$tU", "$avp(outpluse)",
>>     60);                cache_store("local", "Trunk_$tU",
>>     "$avp(trunkid)", 60);         }        xlog("--------- OB Route
>>     1-2 DB fetched value outpluse -> $avp(outpluse) | trunkid ->
>>     $avp(trunkid) | Return Code: $rc-------"); }
>>     The records in xlog I'm getting without using async; Jan 19
>>     18:05:39 qorblpsisprxyd1 /usr/sbin/opensips[14040]: --------- OB
>>     Route 1-1 DB fetched value outpluse -> 6099020000
>>     <tel:%28609%29%20902-0000> | trunkid -> 117 | Return Code: 1 |
>>     Var Res: 1------- Jan 19 18:05:39 qorblpsisprxyd1
>>     /usr/sbin/opensips[14040]: --------- OB Route 1-2 DB fetched
>>     value outpluse -> 6099020000 <tel:%28609%29%20902-0000> | trunkid
>>     -> 117 | Return Code: 1 | Var Res: 1-------
>>     Whereas, records in xlog I'm getting using async; Jan 19 18:10:07
>>     qorblpsisprxyd1 /usr/sbin/opensips[14109]: --------- OB Route 1-1
>>     DB fetched value outpluse -> 6099020000
>>     <tel:%28609%29%20902-0000> | trunkid -> 117 | Return Code:
>>     1------- Jan 19 18:10:07 qorblpsisprxyd1
>>     /usr/sbin/opensips[14109]: --------- OB Route 1-2 DB fetched
>>     value outpluse -> 6099020000 <tel:%28609%29%20902-0000> | trunkid
>>     -> 117 | Return Code: 0-------
>>     Is there is way to properly retain the $retcode/$rc in version
>>     2.2.2? Seems like using async return code(s) are not properly set
>>     or the avp variables are not setting up correct using async
>>     statement.
>>     Please advise, if the above async db statement is correct as
>>     shared in sample above.
>>     -- 
>>     Regards, Ahmed Munir Chohan
>>
>>     _______________________________________________
>>     Users mailing list
>>     Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>     http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>     <http://lists.opensips.org/cgi-bin/mailman/listinfo/users>
>
> -- 
> Regards, Ahmed Munir Chohan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20170124/20fc4fdd/attachment-0001.html>


More information about the Users mailing list