diff options
author | Anders Svensson <[email protected]> | 2017-02-06 15:49:44 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2017-02-24 10:45:45 +0100 |
commit | a5bc8a5911613ec9ddfef9984ee59a24110c8b2b (patch) | |
tree | 6343e6f55482aa094e4b34dfd335bc7667b2f8af /lib/diameter/src/base/diameter_watchdog.erl | |
parent | 3473ecd83a7bbe7e0bebb865f25dddb93e3bf10f (diff) | |
download | otp-a5bc8a5911613ec9ddfef9984ee59a24110c8b2b.tar.gz otp-a5bc8a5911613ec9ddfef9984ee59a24110c8b2b.tar.bz2 otp-a5bc8a5911613ec9ddfef9984ee59a24110c8b2b.zip |
Fix/redo failover optimization
Commit 9a878743 addressed inefficiency at failover, but introduced
inefficiency in the sending of outgoing requests in so doing: each
outgoing request added an request table entry keyed on a transport pid,
then looked for a specific element with this key, and then (later)
removed the inserted element. Since the request table is a bag, this
results in linear searches over a potentially long list of element
keyed on the same pid. The higher the rate of outgoing calls, the more
costly it becomes.
Instead of writing entries to the request table, the peer_up/down calls
to diameter_traffic that mirror transitions to and from the OKAY state
in the RFC 3539 watchdog state machine now result in a process for
request processes to monitor in order to detect failover.
Diffstat (limited to 'lib/diameter/src/base/diameter_watchdog.erl')
0 files changed, 0 insertions, 0 deletions