<div dir="ltr">Hi Daniel,<div><br></div><div>well, i think its not needed but wouldn't we all benefit from it ? binding the internal structure to the result instead of connection?</div><div><br></div><div>Thanks<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Sep 8, 2014 at 3:37 PM, <span dir="ltr"><<a href="mailto:sr-dev-request@lists.sip-router.org" target="_blank">sr-dev-request@lists.sip-router.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send sr-dev mailing list submissions to<br>
<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
or, via email, send a message with subject or body 'help' to<br>
<a href="mailto:sr-dev-request@lists.sip-router.org">sr-dev-request@lists.sip-router.org</a><br>
<br>
You can reach the person managing the list at<br>
<a href="mailto:sr-dev-owner@lists.sip-router.org">sr-dev-owner@lists.sip-router.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of sr-dev digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Re: accessing database from a child forked proces<br>
(Daniel-Constantin Mierla)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Mon, 08 Sep 2014 16:37:21 +0200<br>
From: Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>><br>
To: Luis Azedo <<a href="mailto:luis.azedo@factorlusitano.com">luis.azedo@factorlusitano.com</a>><br>
Cc: "Kamailio \(SER\) - Development Mailing List"<br>
<<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>><br>
Subject: Re: [sr-dev] accessing database from a child forked proces<br>
Message-ID: <<a href="mailto:540DBF21.8070802@gmail.com">540DBF21.8070802@gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"; Format="flowed"<br>
<br>
Hello,<br>
<br>
On 08/09/14 15:29, Luis Azedo wrote:<br>
> Hi Daniel,<br>
><br>
> all problems solved with presence! i was not running child_init and<br>
> now there is no need for the proposed patch to presence.<br>
ok. Given this, would the db_text patch still be required, as there<br>
should be no database connection sharing?<br>
<br>
Cheers,<br>
Daniel<br>
><br>
> Thank you<br>
><br>
><br>
><br>
> On Mon, Sep 8, 2014 at 2:13 PM, Luis Azedo<br>
> <<a href="mailto:luis.azedo@factorlusitano.com">luis.azedo@factorlusitano.com</a> <mailto:<a href="mailto:luis.azedo@factorlusitano.com">luis.azedo@factorlusitano.com</a>>><br>
> wrote:<br>
><br>
> Hi Daniel,<br>
><br>
> this is the way we are creating the child processes (1 manager and<br>
> n workers)<br>
> the problem is with the workers.<br>
> the worker will call a event-route and in the script config we try<br>
> to call pres_refresh_watchers and that's where we get the pa_db =<br>
> NULL.<br>
><br>
> as i understand from your email, if we change PROC_NOCHLDINIT and<br>
> let the child_init execute for the forked process then it will<br>
> also execute child_init in other modules ? it makes sense.<br>
><br>
> going to try this.<br>
><br>
><br>
> static int mod_child_init(int rank)<br>
> {<br>
> int pid;<br>
> int i;<br>
><br>
> fire_init_event(rank);<br>
><br>
> if (rank==PROC_MAIN) {<br>
> pid=fork_process(PROC_NOCHLDINIT, "AMQP Manager", 1);<br>
> if (pid<0)<br>
> return -1; /* error */<br>
> if(pid==0){<br>
> kz_amqp_manager_loop(0);<br>
> }<br>
> else {<br>
> for(i=0; i < dbk_consumer_processes; i++) {<br>
> pid=fork_process(PROC_NOCHLDINIT, "AMQP Consumer", 1);<br>
> if (pid<0)<br>
> return -1; /* error */<br>
> if(pid==0){<br>
> mod_consumer_proc(i+1);<br>
> }<br>
> }<br>
> }<br>
> }<br>
><br>
> return 0;<br>
> }<br>
><br>
><br>
><br>
> On Mon, Sep 8, 2014 at 1:11 PM, Daniel-Constantin Mierla<br>
> <<a href="mailto:miconda@gmail.com">miconda@gmail.com</a> <mailto:<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>>> wrote:<br>
><br>
> Hello,<br>
><br>
> the database connection should not be shared beween processes,<br>
> because it can bring unexpected results in may places.<br>
><br>
> Right now, the rule is to have one connection per process,<br>
> shared by all modules in that process.<br>
><br>
> To achieve that, at mod_init each module opens database<br>
> connection and closes it before ending the function. Then in<br>
> child_init() the connection is opened again. Another module<br>
> that will have to open in child_init() will get the same<br>
> connection now.<br>
><br>
> When you create a new process, you tell the type of child and<br>
> based on that child_init() from the other modules are executed.<br>
><br>
> What is the function do you use for creating a new process?<br>
> Maybe you can paste it here exactly how you do it and I can<br>
> see if something can be done.<br>
><br>
> Cheers,<br>
> Daniel<br>
><br>
><br>
> On 03/09/14 12:09, Luis Azedo wrote:<br>
>> Hi Jason,<br>
>><br>
>> thanks for the reply.<br>
>><br>
>> the last 2 statements in presence module mod_init close the<br>
>> connection and set pa_db to NULL. when my module main process<br>
>> forks the extra processes the pa_db in presence is NULL, so<br>
>> when it calls pres_refresh_watchers it fails because pa_db is<br>
>> NULL.<br>
>> i commented these last statements in presence mod_init and i<br>
>> got it to work.<br>
>><br>
>> // pa_dbf.close(pa_db);<br>
>> // pa_db = NULL;<br>
>><br>
>> does this have any implications on how the module works ? is<br>
>> it ok to merge this change ?<br>
>><br>
>> Thank you<br>
>><br>
>><br>
>><br>
>> ----------------------------------------------------------------------<br>
>><br>
>> Message: 1<br>
>> Date: Sun, 31 Aug 2014 09:40:49 +0200<br>
>> From: Jason Penton <<a href="mailto:jason.penton@gmail.com">jason.penton@gmail.com</a><br>
>> <mailto:<a href="mailto:jason.penton@gmail.com">jason.penton@gmail.com</a>>><br>
>> To: "Kamailio (SER) - Development Mailing List"<br>
>> <<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
>> <mailto:<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>>><br>
>> Subject: Re: [sr-dev] accessing database from a child<br>
>> forked process<br>
>> Message-ID:<br>
>><br>
>> <<a href="mailto:CALoGXNWvHhCAO91Tfa0w8W3eYQRvfV7Qkgte7dBnD%2BciNr_Kpg@mail.gmail.com">CALoGXNWvHhCAO91Tfa0w8W3eYQRvfV7Qkgte7dBnD+ciNr_Kpg@mail.gmail.com</a><br>
>> <mailto:<a href="mailto:CALoGXNWvHhCAO91Tfa0w8W3eYQRvfV7Qkgte7dBnD%252BciNr_Kpg@mail.gmail.com">CALoGXNWvHhCAO91Tfa0w8W3eYQRvfV7Qkgte7dBnD%2BciNr_Kpg@mail.gmail.com</a>>><br>
>> Content-Type: text/plain; charset="utf-8"<br>
>><br>
>> To confirm exactly what processes are being used, maybe<br>
>> check the log file<br>
>> and take note of process id at each log event. For<br>
>> example you could check<br>
>> the process id of the messages showing you the connection<br>
>> is null. Then run<br>
>> kamcmd ps to show the process list with a description of<br>
>> each Kamailio<br>
>> process. That will probably point you in the correct<br>
>> direction.<br>
>><br>
>> Cheers<br>
>> Jason<br>
>><br>
>><br>
>> On Fri, Aug 29, 2014 at 3:53 PM, Luis Azedo<br>
>> <<a href="mailto:luis.azedo@factorlusitano.com">luis.azedo@factorlusitano.com</a><br>
>> <mailto:<a href="mailto:luis.azedo@factorlusitano.com">luis.azedo@factorlusitano.com</a>>><br>
>> wrote:<br>
>><br>
>> > Hi,<br>
>> ><br>
>> > i have a module that creates 1 extra process where it<br>
>> processes stuff in a<br>
>> > loop.<br>
>> > on some condition i fire a route_event with a fakemsg<br>
>> and its up to the<br>
>> > user of the module to take action, it tries to work<br>
>> like dispatcher module<br>
>> > or htable (mod-init) events.<br>
>> ><br>
>> > the problem that i have is that, if i call some<br>
>> function on some module<br>
>> > that performs a database action, the connection is null<br>
>> when it calls<br>
>> > use_table.<br>
>> ><br>
>> > in this case i'm making this call<br>
>> > event_route[my_module:my_event]<br>
>> > {<br>
>> > $var(my_uri) = <<result of some operations>>;<br>
>> > pres_refresh_watchers("$var(my_uri)", "dialog", 1);<br>
>> > }<br>
>> > presence module makes the call to use_table but this<br>
>> call fails because<br>
>> > the connection is null. presence module is working fine<br>
>> besides this.<br>
>> ><br>
>> > if i make this call inside<br>
>> event_route[dispatcher:dst-up] it works.<br>
>> ><br>
>> > i think that dispatcher fires the event inside a<br>
>> callback from a<br>
>> > registered timer, so, i think (may be wrong) that it<br>
>> comes from a different<br>
>> > process ?<br>
>> ><br>
>> > i wonder if i'm missing something from child_init ?<br>
>> need to register<br>
>> > something ?<br>
>> ><br>
>> > thanks for your help.<br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> ><br>
>> > _______________________________________________<br>
>> > sr-dev mailing list<br>
>> > <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
>> <mailto:<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>><br>
>> > <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
>> ><br>
>> ><br>
>> -------------- next part --------------<br>
>> An HTML attachment was scrubbed...<br>
>> URL:<br>
>> <<a href="http://lists.sip-router.org/pipermail/sr-dev/attachments/20140831/9fba51e4/attachment-0001.html" target="_blank">http://lists.sip-router.org/pipermail/sr-dev/attachments/20140831/9fba51e4/attachment-0001.html</a>><br>
>><br>
>> ------------------------------<br>
>><br>
>> _______________________________________________<br>
>> sr-dev mailing list<br>
>> <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
>> <mailto:<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>><br>
>> <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
>><br>
>><br>
>> End of sr-dev Digest, Vol 70, Issue 71<br>
>> **************************************<br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> sr-dev mailing list<br>
>> <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a> <mailto:<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a>><br>
>> <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
><br>
> --<br>
> Daniel-Constantin Mierla<br>
> <a href="http://twitter.com/#!/miconda" target="_blank">http://twitter.com/#!/miconda</a> <<a href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#%21/miconda</a>> -<a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a><br>
> Next Kamailio Advanced Trainings 2014 -<a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a><br>
> Sep 22-25, Berlin, Germany<br>
><br>
><br>
><br>
<br>
--<br>
Daniel-Constantin Mierla<br>
<a href="http://twitter.com/#!/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a><br>
Next Kamailio Advanced Trainings 2014 - <a href="http://www.asipto.com" target="_blank">http://www.asipto.com</a><br>
Sep 22-25, Berlin, Germany<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.sip-router.org/pipermail/sr-dev/attachments/20140908/6da7f048/attachment.html" target="_blank">http://lists.sip-router.org/pipermail/sr-dev/attachments/20140908/6da7f048/attachment.html</a>><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
sr-dev mailing list<br>
<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
<br>
<br>
End of sr-dev Digest, Vol 71, Issue 24<br>
**************************************<br>
</blockquote></div><br></div></div></div>