[sr-dev] kazoo module updates & documentation
Daniel-Constantin Mierla
miconda at gmail.com
Sat Sep 13 17:55:07 CEST 2014
Hello,
ok, so I got back into the db_text code (as much as I wanted not to :-)
) and now it's clearer what's all about. There are practically two
result structures, one intermediary built internally by db_text and from
it, one built for the use in modules. I thought it is about a single
structure that has now to be moved somewhere else.
But with db_text, the first was in connection, the second was in db_res,
so a new query would reset the intermediary one from connection. It
makes sense to have both in one place, otherwise indeed can end up in
issues with a new query before processing current result.
You can go ahead and merge the patch.
Regarding DB_CAP_FETCH is set in lib/srdb1 for the modules that export
the fetch result function.
Thanks,
Daniel
On 13/09/14 14:47, Luis Azedo wrote:
> Hi Daniel,
>
> since db_text doesn't support DB_CAP_FETCH i think this wouldn't be a
> problem.
>
> the internal structure result is saved in db1_res ptr field. I don't
> know about the other db modules, but a quick look at mysql db module
> seems to show a similar approach with db1_res ptr field, check
> *db_mysql_free_result*
> btw, *db_fetch_next* tests for DB_CAP_FETCH and i believe this is not
> set mysql db_init, am i missing something?
>
> ------------------------------------------------------------------------
> *From:* Daniel-Constantin Mierla [miconda at gmail.com]
> *Sent:* Saturday, September 13, 2014 1:17 AM
> *To:* Luis Azedo; Kamailio (SER) - Development Mailing List; Waite,
> Hugh; Peter Dunkley
> *Subject:* Re: [sr-dev] kazoo module updates & documentation
>
> Hello,
>
> this looks like a problem, indeed. Thanks for troubleshooting to get
> down to it.
>
> However, the solution to store the result in local variable is still
> not the good choice. That is because we have so called result fetch
> support, where the result from the query is not retrieved all at once
> from database connection, but you can specify the number of rows
> (e.g., you want to get in db_res only 1000 rows at the moment).
> Therefore, the result of the initial query will not be processed
> entirely if the second query is done over the same connection after
> retrieving only the first fetch_rows.
>
> I haven't looked deep at your patch to db_text, it might solve it for
> your module, but overall the problem remains with the other db modules
> (e.g., mysql, ...). We need to come up with a fix for everything affected.
>
> One solution is to update the presence module to use two connection,
> one not-pooled (so it will do always a new connection, not selecting
> from existing pool if db_url matches). IIRC, there is a similar case
> in another module, developed at that time by Peter or Hugh -- cc-ed
> them, hopefully they can share some insights quickly. I will look as
> well over the issue to see if there are alternatives to fix it.
>
> Cheers,
> Daniel
>
> On 13/09/14 03:59, Luis Azedo wrote:
>> Hi Daniel,
>>
>> please take a look at msg_presentity_clean function in publish.c
>> module presence.
>>
>> if the initial query returns a result
>> if pres_notifier_processes = 0 (immediate notify)
>> it calls publ_notify function
>> in publ_notify function in notify.c
>> if(p->event->agg_nbody) // dialoginfo aggregates the results
>> {
>> notify_body = *get_p_notify_body*(pres_uri, p->event , offline_etag,
>> NULL);
>> .....
>> *get_p_notify_body *queries the *presentity *table to get other
>> records to aggregate body
>> which will override the result in the connection.
>>
>> so the process is the same but it calls the query 2 times in a row
>> without freeing the 1st result.
>>
>>
>>
>>
>> ------------------------------------------------------------------------
>> *From:* sr-dev-bounces at lists.sip-router.org
>> [sr-dev-bounces at lists.sip-router.org] on behalf of Daniel-Constantin
>> Mierla [miconda at gmail.com]
>> *Sent:* Friday, September 12, 2014 12:15 PM
>> *To:* Kamailio (SER) - Development Mailing List
>> *Subject:* Re: [sr-dev] kazoo module updates & documentation
>>
>> Hello,
>>
>> changes to kazoo modules are ok, you can merge them.
>>
>> But the one for db_text I don't find it (yet) necessary, because it
>> may solve an issue in a wrong way.
>>
>> I asked you to push the other patch on db_text related to blob type
>> handling in freeing the value. That can be done. For the one storing
>> the result on db_res variable, I will comment separately.
>>
>> Daniel
>>
>> On 12/09/14 20:55, Luis Azedo wrote:
>>> Hi,
>>>
>>> i would like to propose the small changes to the kazoo module in
>>> branch lazedo/kazoo to go into master.
>>> it's mostly code cleanup & dependency removal.
>>>
>>> also added the documentation on that branch and would appreciate any
>>> feedback.
>>>
>>>
>>> there is also a patch to the db_text module. the comment on that
>>> commit tells the reason for that patch.
>>>
>>> Thanks
>>>
>>>
>>>
>>> _______________________________________________
>>> sr-dev mailing list
>>> sr-dev at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>
>> --
>> Daniel-Constantin Mierla
>> http://twitter.com/#!/miconda -http://www.linkedin.com/in/miconda
>> Next Kamailio Advanced Trainings 2014 -http://www.asipto.com
>> Sep 22-25, Berlin, Germany
>
> --
> Daniel-Constantin Mierla
> http://twitter.com/#!/miconda -http://www.linkedin.com/in/miconda
> Next Kamailio Advanced Trainings 2014 -http://www.asipto.com
> Sep 22-25, Berlin, Germany
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Next Kamailio Advanced Trainings 2014 - http://www.asipto.com
Sep 22-25, Berlin, Germany
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20140913/3d1c4b55/attachment.html>
More information about the sr-dev
mailing list