[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