Module: kamailio Branch: master Commit: fefe1e63a175ce475a44ae11bb89929e5c5f67d3 URL: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929e...
Author: Stefan Mititelu stefan.mititelu@1and1.ro Committer: Stefan Mititelu stefan.mititelu@1and1.ro Date: 2015-11-23T12:12:27+02:00
rtpengine: Update doku for node enable/disable
This is my understanding of the current shared memory node list implementation. Correct me if I'm wrong.
---
Modified: modules/rtpengine/doc/rtpengine_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929e... Patch: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929e...
---
diff --git a/modules/rtpengine/doc/rtpengine_admin.xml b/modules/rtpengine/doc/rtpengine_admin.xml index bcb1c03..2454db2 100644 --- a/modules/rtpengine/doc/rtpengine_admin.xml +++ b/modules/rtpengine/doc/rtpengine_admin.xml @@ -73,6 +73,38 @@ If the set was selected using setid_avp, the avp needs to be set only once before rtpengine_offer() or rtpengine_manage() call. </para> + <para> + From the current implementation point of view, the sets of rtpproxy nodes + are shared memory(shm), so all processes can see a common list of nodes. + There is no locking when setting the nodes enabled/disabled (to keep the + memory access as fast as possible). Thus, problems related to node state + might appear for concurent processes that might set the nodes + enabled/disabled(e.g. by fifo command). This robustness problems are overcomed as follows. + </para> + + <para> + If the current process sees the selected node as disabled, the node is + <emphasis>force tested</emphasis> before the current process actually + takes the disabled decision. If the test succeeds, the process will set + the node as enabled (but other concurrent process might still see it as disabled). +. + </para> + + <para> + If the current process sees the selected node as enabled, it does no additional checks + and sends the command which will fail in case the machine is actually broken. + The process will set the node as disabled (but other concurrent process might still see it as enabled). + </para> + + <para> + The 'kamctl fifo' commands (including rtpengin ones) are executed by an exclusive + process which operate on the same shared memory node list. + </para> + + <para> + All the nodes are pinged in the beginning by all the processes, + even if the node list is shared memory. + </para> </section>
<section>