open-consul/command
Atin Malaviya b623af776b Consul Session TTLs
The design of the session TTLs is based on the Google Chubby approach
(http://research.google.com/archive/chubby-osdi06.pdf). The Session
struct has an additional TTL field now. This attaches an implicit
heartbeat based failure detector. Tracking of heartbeats is done by
the current leader and not persisted via the Raft log. The implication
of this is during a leader failover, we do not retain the last
heartbeat times.

Similar to Chubby, the TTL represents a lower-bound. Consul promises
not to terminate a session before the TTL has expired, but is allowed
to extend the expiration past it. This enables us to reset the TTL on
a leader failover. The TTL is also extended when the client does a
heartbeat. Like Chubby, this means a TTL is extended on creation,
heartbeat or failover.

Additionally, because we must account for time requests are in transit
and the relative rates of clocks on the clients and servers, Consul
will take the conservative approach of internally multiplying the TTL
by 2x. This helps to compensate for network latency and clock skew
without violating the contract.

Reference: https://docs.google.com/document/d/1Y5-pahLkUaA7Kz4SBU_mehKiyt9yaaUGcBTMZR7lToY/edit?usp=sharing
2014-12-07 12:38:22 -05:00
..
agent Consul Session TTLs 2014-12-07 12:38:22 -05:00
event.go Fix indent space 2014-09-05 11:09:37 +09:00
event_test.go command/event: Adding new event command 2014-08-28 16:40:31 -07:00
exec.go cleanup unreachable code 2014-11-25 19:54:30 +01:00
exec_test.go command/exec: Testing exec 2014-09-01 14:46:22 -07:00
force_leave.go website: updating documentation on commands 2014-02-18 17:32:13 -08:00
force_leave_test.go gofmt 2014-05-20 16:25:29 -07:00
info.go command/info: Move warning output to the top 2014-04-29 11:09:14 -07:00
info_test.go command/info: remove unused import 2014-03-05 15:02:56 -08:00
join.go website: updating documentation on commands 2014-02-18 17:32:13 -08:00
join_test.go command: Fixing more tests 2014-04-11 16:34:29 -07:00
keygen.go Adding the various CLI commands 2013-12-31 13:06:33 -08:00
keygen_test.go Adding the various CLI commands 2013-12-31 13:06:33 -08:00
keyring.go command/keyring: adjust command help 2014-11-19 16:36:18 -08:00
keyring_test.go consul: more tests, remove unused KeyManager() method 2014-11-19 16:37:40 -08:00
leave.go website: updating documentation on commands 2014-02-18 17:32:13 -08:00
leave_test.go Adding the various CLI commands 2013-12-31 13:06:33 -08:00
members.go command/members: Improve output. Fixes #143 2014-06-06 16:00:02 -07:00
members_test.go command/members: Remove tests for old role filter 2014-06-08 14:02:24 -07:00
monitor.go website: updating documentation on commands 2014-02-18 17:32:13 -08:00
reload.go command/reload: Adding new command 2014-06-11 10:58:26 -07:00
reload_test.go command/reload: Adding new command 2014-06-11 10:58:26 -07:00
rpc.go command: Adding method to get client with datacenter 2014-09-01 14:46:21 -07:00
util_test.go consul: more tests, remove unused KeyManager() method 2014-11-19 16:37:40 -08:00
version.go Make the 'consul version' to return value that is from 'git describe --tags' 2014-11-18 22:15:58 +00:00
version_test.go Adding basic CLI infrastructure 2013-12-19 11:22:08 -08:00
watch.go command/watch: Changes for event watch 2014-08-28 15:51:12 -07:00
watch_test.go command/watch: Adding tests 2014-08-21 16:08:21 -07:00