[sr-dev] git:master:fefe1e63: rtpengine: Update doku for node enable/disable

Stefan Mititelu stefan.mititelu at 1and1.ro
Mon Nov 23 11:39:29 CET 2015


Module: kamailio
Branch: master
Commit: fefe1e63a175ce475a44ae11bb89929e5c5f67d3
URL: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929e5c5f67d3

Author: Stefan Mititelu <stefan.mititelu at 1and1.ro>
Committer: Stefan Mititelu <stefan.mititelu at 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/fefe1e63a175ce475a44ae11bb89929e5c5f67d3.diff
Patch: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929e5c5f67d3.patch

---

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>




More information about the sr-dev mailing list