[OpenSIPS-Users] Async DB statement

Ahmed Munir ahmedmunir007 at gmail.com
Tue Jan 24 08:44:35 EST 2017


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>
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 Developerhttp://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 <(609)%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 <(609)%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 <(609)%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 <(609)%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 listUsers at lists.opensips.orghttp://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/3a859c07/attachment-0001.html>


More information about the Users mailing list