aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/src/base/diameter_watchdog.erl
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2017-02-06 15:49:44 +0100
committerAnders Svensson <[email protected]>2017-02-24 10:45:45 +0100
commita5bc8a5911613ec9ddfef9984ee59a24110c8b2b (patch)
tree6343e6f55482aa094e4b34dfd335bc7667b2f8af /lib/diameter/src/base/diameter_watchdog.erl
parent3473ecd83a7bbe7e0bebb865f25dddb93e3bf10f (diff)
downloadotp-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