[OpenSIPS-Users] Async DB statement

Ahmed Munir ahmedmunir007 at gmail.com
Thu Jan 19 18:31:45 EST 2017


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20170119/5eb071e7/attachment.html>


More information about the Users mailing list