* Added implementation of the LEAVE command for a cluster node
* Changed the meaning of Member.isUnavailable to only DOWN and REMOVED
* Removed EXIT and UP as user commands
* Fixed Cluster.self to fall back to checking for itself in the gossip.overview.unreachable set.
* Added Leader action transitioning from LEAVING -> EXITING
* Improved comments
Signed-off-by: Jonas Bonér <jonas@jonasboner.com>
* Uses finite state machine for three states: Closed, Open, Half-Open
* Closed state allows calls through, and on sequential failures exceeding the max# set - transitions to Open state. Intervening successes cause the failure count to reset to 0
* Open state throws a CircuitOpenException on every call until the reset timeout is reached which causes a transition to Half-Open state
* Half-Open state will allow the next single call through, if it succeeds - transition to Closed state, if it fails - transition back to Open state, starting the reset timer again
* Allow configuration for the call and reset timeouts, as well as the maximum number of sequential failures before opening
* Supports async or synchronous call protection
* Callbacks are supported for state entry into Closed, Open, Half-Open. These are run in the supplied execution context
* Both thrown exceptions and calls exceeding max call time are considered failures
* Uses akka scheduler for timer events
* Integrated into File-Based durable mailbox
* Sample documented for other durable mailboxes
* The only allowed member states for a leader are up or leaving
* Added above check in assertLeader so that we always verify that
* More usage of assertLeader in the tests
1) Netty server and client pipelines updated to conditionally load keystore/truststore if SSL is enabled in the config
2) Supports any available encryption protocol via 'ssl-protocol'
3) Supported encryption algorithms are specified via 'ssl-encryption-protocol' config key
Conflicts:
akka-remote/src/main/scala/akka/remote/netty/Client.scala
akka-remote/src/main/scala/akka/remote/netty/Server.scala
akka-remote/src/main/scala/akka/remote/netty/Settings.scala