During init, the kazoo module performs forking for "AMQP Consumer Worker".
The ranks for all this process are incremented one by one, starting with value 1.
Value 1 is defined as PROC_SIPINIT and has a special meaning for most of the regular modules.
One side effect of this is that the registration records are loaded from the db twice!
One simple fix would be to fork all the workers with a PROC_NOCHLDINIT ranking.
Proposed patch:
````
--- a/src/modules/kazoo/kazoo.c
+++ b/src/modules/kazoo/kazoo.c
@@ -369,7 +369,7 @@ static int mod_child_init(int rank)
*/
for(i=0; i < dbk_consumer_workers; i++) {
- pid=fork_process(i+1, "AMQP Consumer Worker", 1);
+ pid=fork_process(PROC_NOCHLDINIT, "AMQP Consumer Worker", 1);
if (pid<0)
return -1; /* error */
if(pid==0){
````
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/972
The ims_registrar_scscf module creates several processes for notification workers.
All this processes have random ranks.
It seems that the rank for all this processes has no special meaning and therefore the forking should be done using the PROC_NOCHLDINIT rank and not a random hardcoded one.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/974
Module: kamailio
Branch: master
Commit: 3e8589afcf75e7c93c5bcb9b4c4269c7b29774bd
URL: https://github.com/kamailio/kamailio/commit/3e8589afcf75e7c93c5bcb9b4c4269c…
Author: Ovidiu Sas <osas(a)voipembedded.com>
Committer: Ovidiu Sas <osas(a)voipembedded.com>
Date: 2017-02-09T15:18:13-05:00
core: added PROC_XWORKER as an alias to PROC_RANK127
---
Modified: src/core/sr_module.h
---
Diff: https://github.com/kamailio/kamailio/commit/3e8589afcf75e7c93c5bcb9b4c4269c…
Patch: https://github.com/kamailio/kamailio/commit/3e8589afcf75e7c93c5bcb9b4c4269c…
---
diff --git a/src/core/sr_module.h b/src/core/sr_module.h
index 2317de5..e2bef74 100644
--- a/src/core/sr_module.h
+++ b/src/core/sr_module.h
@@ -180,11 +180,15 @@ typedef int (*param_func_t)( modparam_t type, void* val);
#define PROC_SIPROUTER 2 /**< First (pure) SIP worker - can be used to check
if just a normal sip router or initialize custom worker
processes by starting from this value */
-#define PROC_SIPRPC 127 /**< Used to init RPC worker as SIP commands
+#define PROC_RANK127 127 /**< Used to init RPC worker as SIP commands
handler. Don't do any special processing in the
child init with this rank - just bare child
initialization */
+#define PROC_SIPRPC PROC_RANK127
+
+#define PROC_XWORKER PROC_RANK127
+
#define PROC_MIN PROC_NOCHLDINIT /**< Minimum process rank */