[OpenSIPS-Users] Dispatcher Order SQL DB - version 1.11.5

Bogdan-Andrei Iancu bogdan at opensips.org
Wed Aug 19 15:59:36 CEST 2015


Hi Federico,

Well, it is a good workaround. As a hint, if you do not want to 
sacrifice the "attrs" column for ordering (attributes are really useful 
to have in many usage scenarios), you can better use the "weights" column.

Regards,

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

On 18.08.2015 17:11, Federico Edorna wrote:
> In my table there is a priority column! ;) I don't know where did I 
> get that schema... sorry, my mistake.
>
> Now, going back to the workarround (just in case someone has the same 
> issue), since I'm not using the attrs column value in the config file, 
> I will use that column to order the set. To accomplish that, I tried 
> with the following patch in modules/dispatcher/dispatch.c
>
>
> --- /tmp/dispatch.c2015-08-18 10:40:27.461325458 -0300
> +++ ./dispatch.c2015-08-18 10:39:45.941081837 -0300
> @@ -699,7 +699,7 @@
> memset( d_data, 0, sizeof(ds_data_t));
>
> /*select the whole table and all the columns*/
> -if(ds_dbf.query(ds_db_handle,0,0,0,query_cols,0,6,0,&res) < 0) {
> +if(ds_dbf.query(ds_db_handle,0,0,0,query_cols,0,6,&ds_dest_attrs_col,&res) 
> < 0) {
> LM_ERR("error while querying database\n");
> goto error;
> }
>
>
> That is, ds_dbf.query sorts the table using &ds_dest_attrs_col. Now 
> the postgres log shows:
>
> 2015-08-18 10:46:51 ART [9503]: [2-1] LOG:  duration: 0.224 ms 
>  statement: select setid,destination,socket,state,weight,attrs from 
> sbc.dispatcher * order by attrs*
>
> I will try with this (at my own risk...) until we upgrade to 2.x
>
> Thanks!
>
>
> On Tue, Aug 18, 2015 at 8:45 AM, Bogdan-Andrei Iancu 
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
>     Federico,
>
>     There is no "priority" field in the dispatcher table in 1.11 :
>     http://www.opensips.org/Documentation/Install-DBSchema-1-11#AEN4123
>
>     wrong table ?
>
>     Regards,
>
>     Bogdan-Andrei Iancu
>     OpenSIPS Founder and Developer
>     http://www.opensips-solutions.com
>
>     On 17.08.2015 21:03, Federico Edorna wrote:
>>     Actually the table has the priority column in ver 1.11. Anyway,
>>     thanks for your response Bogdan, I will try to find a workarround
>>     for this version until we upgrade to 2.x.
>>
>>     Thanks & Regards
>>
>>     Federico
>>
>>     On Mon, Aug 17, 2015 at 5:56 AM, Bogdan-Andrei Iancu
>>     <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>>
>>         Hi Federico,
>>
>>         This is an known issue with the older versions of OpenSIPS
>>         (not being able set an order for the records). In 2.1 this
>>         was solved by having a priority column which dictates the
>>         oder of usage of records.
>>
>>         For versions before 2.1, you have to rely on the oder
>>         provided by DB :(.
>>
>>         Regards,
>>
>>         Bogdan-Andrei Iancu
>>         OpenSIPS Founder and Developer
>>         http://www.opensips-solutions.com
>>
>>         On 14.08.2015 20:49, Federico Edorna wrote:
>>>         Hello Guys,
>>>         I'm using dispatcher module with postgres database. The
>>>         ds_select_dst function in the script file is used like this:
>>>
>>>         ds_select_dst("$(var(ds_set){s.int <http://s.int/>})","8");
>>>
>>>         that is, using "8" algorithm (first entry in set is chosen)
>>>         because I need to use always the same destination in the set
>>>         while it is up. If not, then the backup destination (next in
>>>         the set) is used.
>>>
>>>         The problem I've found is that when the sets are read from
>>>         database (opensips restart or fifo ds_reload), the select
>>>         hasn't a "order" directive  in the sql statement, so the
>>>         order is defined depending of the last tuple update. The
>>>         postgres log shows this when doing a fifo ds_reload:
>>>
>>>         2015-08-14 11:36:53 ART [23684]: [1-1] LOG:  duration: 0.582
>>>         ms  statement: select
>>>         setid,destination,socket,state,weight,attrs from sbc.dispatcher
>>>
>>>         And the syslog & debug=6 shows:
>>>
>>>         DBG:db_postgres:db_postgres_submit_query: 0x7f4344987010
>>>         PQsendQuery(select
>>>         setid,destination,socket,state,weight,attrs from
>>>         sbc.dispatcher )
>>>
>>>         So, any sql update in any column will change the order in
>>>         the set because we don't have the "order by priority" for
>>>         example.
>>>
>>>         Is there any way to use the weight, priority or the id to
>>>         have a fixed order in the set(s) destination?
>>>
>>>
>>>         Many Thanks!
>>>         Federico
>>>
>>>
>>>         _______________________________________________
>>>         Users mailing list
>>>         Users at lists.opensips.org  <mailto: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/20150819/802094db/attachment-0001.htm>


More information about the Users mailing list