<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/diameter, branch master</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Add 'make dialyzer' target to top and apps</title>
<updated>2019-06-26T08:08:19+00:00</updated>
<author>
<name>Lukas Larsson</name>
<email>lukas@erlang.org</email>
</author>
<published>2019-06-20T14:09:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ce2a4e4409a5b0da5522056c29df27ab0afe95ee'/>
<id>ce2a4e4409a5b0da5522056c29df27ab0afe95ee</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add "make test" command for root and application directories</title>
<updated>2019-06-26T06:24:57+00:00</updated>
<author>
<name>Kjell Winblad</name>
<email>kjellwinblad@gmail.com</email>
</author>
<published>2019-06-11T15:36:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=2f246b551cca5ca7ca9187282e42650976a65cbb'/>
<id>2f246b551cca5ca7ca9187282e42650976a65cbb</id>
<content type='text'>
The added make target is described in HOWTO/TESTING.md.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The added make target is described in HOWTO/TESTING.md.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepare release</title>
<updated>2019-04-15T08:58:47+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2019-04-15T08:58:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=134d5a8f6652e625a2ee9e0fc314afd69ee42d4a'/>
<id>134d5a8f6652e625a2ee9e0fc314afd69ee42d4a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add appup and code_change</title>
<updated>2019-04-14T14:21:40+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2019-04-14T13:20:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=82135c10177c9e773b1bc94c327f3744a9025491'/>
<id>82135c10177c9e773b1bc94c327f3744a9025491</id>
<content type='text'>
For the parent commit as a diameter 2.2 patch.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For the parent commit as a diameter 2.2 patch.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix inadvertently broad monitor</title>
<updated>2019-04-14T13:33:06+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2019-04-14T11:05:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=37df105ad012683de1de4a1db40818dde9c7f3bd'/>
<id>37df105ad012683de1de4a1db40818dde9c7f3bd</id>
<content type='text'>
Commit d9d918b2 added a gen_server whose purpose is to keep track of
visible nodes on which diameter_dist:attach/1 has been called to
register a node as a handler of incoming Diameter requests when
diameter_dist:route_session/2 is configured as spawn_opt MFA. The server
contacts visible nodes at init in order to request information, but
instead of monitoring visible to also be able to request information at
nodeup, it monitored on all nodes, resulting in gen_server casts even to
hidden nodes.

Monitor only on visible nodes since a hidden node may not be able to
deal with the new message.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit d9d918b2 added a gen_server whose purpose is to keep track of
visible nodes on which diameter_dist:attach/1 has been called to
register a node as a handler of incoming Diameter requests when
diameter_dist:route_session/2 is configured as spawn_opt MFA. The server
contacts visible nodes at init in order to request information, but
instead of monitoring visible to also be able to request information at
nodeup, it monitored on all nodes, resulting in gen_server casts even to
hidden nodes.

Monitor only on visible nodes since a hidden node may not be able to
deal with the new message.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepare release</title>
<updated>2019-03-11T10:52:56+00:00</updated>
<author>
<name>Erlang/OTP</name>
<email>otp@erlang.org</email>
</author>
<published>2019-03-11T10:52:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=9780184b2cf76eced1ef987408073e96cc29f3bb'/>
<id>9780184b2cf76eced1ef987408073e96cc29f3bb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'anders/diameter/21.3/OTP-15654' into maint</title>
<updated>2019-03-08T10:39:35+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2019-03-08T10:39:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=92962f3bb0d3bd8e0aab40fa142fc8083977caef'/>
<id>92962f3bb0d3bd8e0aab40fa142fc8083977caef</id>
<content type='text'>
* anders/diameter/21.3/OTP-15654:
  Update appup for diameter 2.2 in OTP 21.3
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* anders/diameter/21.3/OTP-15654:
  Update appup for diameter 2.2 in OTP 21.3
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'anders/diameter/distribution/OTP-15398' into maint</title>
<updated>2019-03-08T10:39:24+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2019-03-08T10:39:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=ce56d9bfef133df1ecc5b88e274500f7d0d87257'/>
<id>ce56d9bfef133df1ecc5b88e274500f7d0d87257</id>
<content type='text'>
* anders/diameter/distribution/OTP-15398:
  Add diameter_dist_SUITE to exercise diameter_dist:route_session/2
  Add consistent hashing to diameter_dist:route_session/2
  Add options to diameter_dist:route_session/2 node selection
  Add diameter_dist for ready spawn_opt callbacks
  Tweak/document request handler callback
  Document acknowledgements in transport interface
  Fix comment typo
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* anders/diameter/distribution/OTP-15398:
  Add diameter_dist_SUITE to exercise diameter_dist:route_session/2
  Add consistent hashing to diameter_dist:route_session/2
  Add options to diameter_dist:route_session/2 node selection
  Add diameter_dist for ready spawn_opt callbacks
  Tweak/document request handler callback
  Document acknowledgements in transport interface
  Fix comment typo
</pre>
</div>
</content>
</entry>
<entry>
<title>Add diameter_dist_SUITE to exercise diameter_dist:route_session/2</title>
<updated>2019-03-06T16:44:09+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2019-03-04T13:40:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=d46fcfdcac4b0dcea41add605f9419a7ea17e32c'/>
<id>d46fcfdcac4b0dcea41add605f9419a7ea17e32c</id>
<content type='text'>
Spread a server over three nodes, one of which terminates a peer
connection, the other two to handle requests. Terminate transport on one
of the server nodes and ensure that answers come only from the other
two.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Spread a server over three nodes, one of which terminates a peer
connection, the other two to handle requests. Terminate transport on one
of the server nodes and ensure that answers come only from the other
two.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add consistent hashing to diameter_dist:route_session/2</title>
<updated>2019-03-06T16:42:44+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2019-03-06T16:13:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=376e8fac401bd11b3cb3d2f9661eb7ff0b9bbcd7'/>
<id>376e8fac401bd11b3cb3d2f9661eb7ff0b9bbcd7</id>
<content type='text'>
If the Session-Id optional value to node() mapping fails then hash
Session-Id to a node by default, instead of selecting the local node as
in the parent commit. The previous behaviour is configurable by setting
default = local in an options map.

Nodes make themselves part of the pool from which nodes are selected by
calling diameter_dist:attach/1 with the list of service names they are
willing to handle requests for, the local node being selected in the
absence of any attached nodes. The original idea was to base the node
pool on share_peers and/or use_shared_peers configuration, but that
configuration determines where outgoing requests can be sent, while
route_session/2 deals with incoming requests, so it's not obvious that
conflating the two is a good thing. (Also because
share_peers/use_shared_peers can be used in different ways; the former
could have been skipped entirely.)

The hashing effectively places nodes on a circle, a hashed Session-Id
being mapped to the nearest predecessor node (clockwise). Nodes are
rehashed with each Session-Id (with the id as salt) for a more even
distribution, at the cost of performance, although how high the cost or
how even the distribution has yet to be tested. Obviously, the larger
the number of attached nodes, the higher the cost. Adding/removing an
attached node only affects session ids that hash in the interval between
the added/removed node and its successor (hence consistent hashing).

Options are tweaked slightly compared to the parent commit, and it is
now possible to restrict the optional value mapping to specific Diameter
identities, to avoid mapping an id that was generated at the peer when
the peer is also implemented with the diameter application.

Note that diameter_dist is not yet an officially documented interface,
so could change. Documentation is in the module itself.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the Session-Id optional value to node() mapping fails then hash
Session-Id to a node by default, instead of selecting the local node as
in the parent commit. The previous behaviour is configurable by setting
default = local in an options map.

Nodes make themselves part of the pool from which nodes are selected by
calling diameter_dist:attach/1 with the list of service names they are
willing to handle requests for, the local node being selected in the
absence of any attached nodes. The original idea was to base the node
pool on share_peers and/or use_shared_peers configuration, but that
configuration determines where outgoing requests can be sent, while
route_session/2 deals with incoming requests, so it's not obvious that
conflating the two is a good thing. (Also because
share_peers/use_shared_peers can be used in different ways; the former
could have been skipped entirely.)

The hashing effectively places nodes on a circle, a hashed Session-Id
being mapped to the nearest predecessor node (clockwise). Nodes are
rehashed with each Session-Id (with the id as salt) for a more even
distribution, at the cost of performance, although how high the cost or
how even the distribution has yet to be tested. Obviously, the larger
the number of attached nodes, the higher the cost. Adding/removing an
attached node only affects session ids that hash in the interval between
the added/removed node and its successor (hence consistent hashing).

Options are tweaked slightly compared to the parent commit, and it is
now possible to restrict the optional value mapping to specific Diameter
identities, to avoid mapping an id that was generated at the peer when
the peer is also implemented with the diameter application.

Note that diameter_dist is not yet an officially documented interface,
so could change. Documentation is in the module itself.
</pre>
</div>
</content>
</entry>
</feed>
