Module: kamailio
Branch: master
Commit: fefe1e63a175ce475a44ae11bb89929e5c5f67d3
URL:
https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929…
Author: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Committer: Stefan Mititelu <stefan.mititelu(a)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/fefe1e63a175ce475a44ae11bb89929…
Patch:
https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929…
---
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>