aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/doc/src
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2013-02-24 17:39:46 +0100
committerAnders Svensson <[email protected]>2013-03-17 15:07:00 +0100
commitd70a02e7415caccd13fad8dda417d0d18a112a83 (patch)
tree6b3aa51ad544e74459e5bb6c4a2fcd1d74f080ee /lib/diameter/doc/src
parent63e21fa7d8aa6761640f9cf357663b03578a5446 (diff)
downloadotp-d70a02e7415caccd13fad8dda417d0d18a112a83.tar.gz
otp-d70a02e7415caccd13fad8dda417d0d18a112a83.tar.bz2
otp-d70a02e7415caccd13fad8dda417d0d18a112a83.zip
More flexible distribution config
Allow both share_peers and use_shared_peers to be a list of nodes, or a function that returns a list of nodes.
Diffstat (limited to 'lib/diameter/doc/src')
-rw-r--r--lib/diameter/doc/src/diameter.xml75
-rw-r--r--lib/diameter/doc/src/diameter_app.xml8
2 files changed, 56 insertions, 27 deletions
diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml
index df9e03b2da..8ad4af85a3 100644
--- a/lib/diameter/doc/src/diameter.xml
+++ b/lib/diameter/doc/src/diameter.xml
@@ -43,7 +43,7 @@ under the License.
<approved></approved>
<checked></checked>
<date></date>
-<rev>%VSN%</rev>
+<rev></rev>
<file>diameter.xml</file>
</header>
@@ -774,8 +774,8 @@ Application-Id AVP's in particular.</p>
| evaluable()}</c></tag>
<item>
<p>
-Specifies the degree to which multiple transport connections to the
-same peer are accepted by the service.</p>
+Specifies the degree to which the service allows multiple transport
+connections to the same peer.</p>
<p>
If type <c>[node()]</c> then a connection is rejected if another already
@@ -831,40 +831,60 @@ outgoing requests.</p>
</warning>
</item>
-<tag><c>{share_peers, boolean()}</c></tag>
+<tag><c>{share_peers, boolean() | [node()] | evaluable()}</c></tag>
<item>
<p>
-Specifies whether or not peer connections on the local Erlang node
-are shared with services on visible nodes (as returned by &nodes;).
-Peers shared from remote nodes become available in the candidates list
-passed as the second argument to &app_pick_peer; callbacks.</p>
+Specifies nodes to which peer connections established on the local
+Erlang node are communicated.
+Shared peers become available in the remote candidates list passed to
+&app_pick_peer; callbacks on remote nodes whose services are
+configured to use them: see <c>use_shared_peers</c> below.</p>
<p>
-Defaults to <c>false</c>.</p>
+If <c>false</c> then peers are not shared.
+If <c>[node()]</c> then peers are shared with the specified list of
+nodes.
+If <c>evaluable()</c> then peers are shared with the nodes returned
+by the specified function, evaluated whenever a peer connection
+becomes available or a remote service requests information about local
+connections.
+The value <c>true</c> is equivalent to <c>fun &nodes;</c>.
+The value <c>node()</c> in a node list is ignored, so a collection of
+services can all be configured to share with the same list of
+nodes.</p>
-<note>
<p>
-Peers are only shared with other services of the same name.
-Since the value of the &application_opt; <c>alias</c> is the handle
-for identifying a peer, both local and remote, as a candidate for an
-outgoing request, services that share peers should use the same
-aliases for identifying their supported applications.</p>
-</note>
+Defaults to <c>false</c>.</p>
<note>
<p>
-Services that share peers can do so in order to distribute the
-implementation of a Diameter node across multiple Erlang nodes, in
-which case the participating services should typically be configured
-with identical &capabilities;.</p>
+Peers are only shared with services of the same name for the purpose
+of sending outgoing requests.
+Since the value of the &application_opt; <c>alias</c>, passed to
+&call;, is the handle for identifying a peer as a suitable
+candidate, services that share peers must use the same aliases to
+identify their supported applications.
+They should typically also configure identical &capabilities;, since
+by sharing peer connections they are distributing the implementation
+of a single Diameter node across multiple Erlang nodes.</p>
</note>
</item>
-<tag><c>{use_shared_peers, boolean()}</c></tag>
+<tag><c>{use_shared_peers, boolean() | [node()] | evaluable()}</c></tag>
<item>
<p>
-Specifies whether or not the service makes use of peer connections
-shared by identically named services on other Erlang nodes.</p>
+Specifies nodes from which communicated peers are made available in
+the remote candidates list of &app_pick_peer; callbacks.</p>
+
+<p>
+If <c>false</c> then remote peers are not used.
+If <c>[node()]</c> then only peers from the specified list of nodes
+are used.
+If <c>evaluable()</c> then only peers returned by the specified
+function are used, evaluated whenever a remote service communicates
+information about an available peer connection.
+The value <c>true</c> is equivalent to <c>fun &nodes;</c>.
+The value <c>node()</c> in a node list is ignored.</p>
<p>
Defaults to <c>false</c>.</p>
@@ -874,6 +894,15 @@ Defaults to <c>false</c>.</p>
A service that does not use shared peers will always pass the empty
list as the second argument of &app_pick_peer; callbacks.</p>
</note>
+
+<warning>
+<p>
+Sending a request over a peer connection on a remote node is less
+efficient than sending it over a local connection.
+It may be preferable to make use of the &service_opt;
+<c>restrict_connections</c> and maintain a dedicated connection on
+each node from which requests are sent.</p>
+</warning>
</item>
</taglist>
diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml
index d094e1bade..d4fb792787 100644
--- a/lib/diameter/doc/src/diameter_app.xml
+++ b/lib/diameter/doc/src/diameter_app.xml
@@ -37,7 +37,7 @@ under the License.
<approved></approved>
<checked></checked>
<date></date>
-<rev>%REV%</rev>
+<rev></rev>
<file>diameter_app.xml</file>
</header>
@@ -297,9 +297,9 @@ The return values <c>false</c> and <c>{false, State}</c> (that is,
<note>
<p>
-<c>RemoteCandidates</c> is the empty list if the service has been
-configured with the (default) &mod_service_opt;
-<c>{use_shared_peers, false}</c>.</p>
+The &mod_service_opt; <c>use_shared_peers</c> determines whether or
+not a service uses peers shared from other nodes.
+If not then <c>RemoteCandidates</c> is the empty list.</p>
</note>
<warning>