[OpenSIPS-Users] Async DB statement

Bogdan-Andrei Iancu bogdan at opensips.org
Tue Jan 24 06:45:13 EST 2017


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

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 | 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 | 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 | trunkid -> 117 
> | Return Code: 1-------
> Jan 19 18:10:07 qorblpsisprxyd1 /usr/sbin/opensips[14109]: --------- 
> OB Route 1-2 DB fetched value outpluse -> 6099020000 | 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
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20170124/20cc18c5/attachment.html>


More information about the Users mailing list