Module: kamailio
Branch: master
Commit: 02d8a62260fa1d1e98db4a9b5f4cdac8cab1ea4b
URL:
https://github.com/kamailio/kamailio/commit/02d8a62260fa1d1e98db4a9b5f4cdac…
Author: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Committer: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Date: 2015-11-06T17:17:00+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/02d8a62260fa1d1e98db4a9b5f4cdac…
Patch:
https://github.com/kamailio/kamailio/commit/02d8a62260fa1d1e98db4a9b5f4cdac…
---
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>