etcd/etcdserver
Yicheng Qin ab5df57ecf etcdserver: fix raft state machine may block
When snapshot store requests raft snapshot from etcdserver apply loop,
it may block on the channel for some time, or wait some time for KV to
snapshot. This is unexpected because raft state machine should be unblocked.

Even worse, this block may lead to deadlock:
1. raft state machine waits on getting snapshot from raft memory storage
2. raft memory storage waits snapshot store to get snapshot
3. snapshot store requests raft snapshot from apply loop
4. apply loop is applying entries, and waits raftNode loop to finish
messages sending
5. raftNode loop waits peer loop in Transport to send out messages
6. peer loop in Transport waits for raft state machine to process message

Fix it by changing the logic of getSnap to be asynchronously creation.
2015-10-20 09:19:34 -07:00
..
api/v3rpc etcdserver: better v3 api error handling 2015-09-15 11:20:06 -07:00
auth *: fix govet shadow check failure 2015-08-27 14:15:30 -07:00
etcdhttp metrics: add `events` metrics in etcdhttp. 2015-10-01 08:11:42 +01:00
etcdserverpb *: support v3 compaction 2015-09-14 19:59:36 -07:00
stats *:godep log pkg 2015-06-11 14:22:14 -07:00
cluster.go etcdserver: print out correct restored cluster info 2015-10-02 16:11:32 -07:00
cluster_test.go etcdserver: forbid removing started member if quorum cannot be preserved in strict reconfig mode 2015-09-18 10:09:57 +09:00
cluster_util.go etcdserver: add timeout param on getClusterFromRemotePeers 2015-09-01 08:49:01 -07:00
cluster_util_test.go *: test gofmt with -s and fix reported issues 2015-08-21 18:52:16 -07:00
config.go rafthttp: build transport inside pkg instead of passed-in 2015-10-11 21:42:37 -07:00
config_test.go *: extract types.Cluster from etcdserver.Cluster 2015-05-12 14:53:11 -07:00
errors.go etcdmain: improve log when join discovery fails 2015-09-28 23:23:50 -07:00
member.go etcdserver: avoid deadlock caused by adding members with wrong peer URLs 2015-09-13 09:31:53 +09:00
member_test.go *: switch to line comments for copyright 2015-01-26 09:53:30 -08:00
metrics.go etcdserver: fix typo in metrics.go 2015-06-24 12:42:40 -07:00
raft.go etcdserver: get existing snapshot instead of requesting one 2015-10-05 14:32:16 -07:00
raft_storage.go etcdserver: get existing snapshot instead of requesting one 2015-10-05 14:32:16 -07:00
raft_test.go etcdserver: add snapshotStore and raftStorage 2015-10-01 19:00:59 -07:00
server.go etcdserver: fix raft state machine may block 2015-10-20 09:19:34 -07:00
server_test.go etcdserver: fix raft state machine may block 2015-10-20 09:19:34 -07:00
snapshot_store.go etcdserver: fix raft state machine may block 2015-10-20 09:19:34 -07:00
snapshot_store_test.go etcdserver: fix raft state machine may block 2015-10-20 09:19:34 -07:00
storage.go *: remove migration related stuff from 2.2 2015-08-01 19:37:20 +08:00
v3demo_server.go etcdserver: better v3 api error handling 2015-09-15 11:20:06 -07:00