Revision 36452a1c1d43f8f90511642643a5b3aff2d00391 authored by Jack Kleeman on 06 May 2020, 10:57:19 UTC, committed by tangcong on 23 June 2020, 11:50:21 UTC
Currently, watch cancel requests are only sent to the server after a
message comes through on a watch where the client has cancelled. This
means that cancelled watches that don't receive any new messages are
never cancelled; they persist for the lifetime of the client stream.
This has negative connotations for locking applications where a watch
may observe a key which might never change again after cancellation,
leading to many accumulating watches on the server.

By cancelling proactively, in most cases we simply move the cancel
request to happen earlier, and additionally we solve the case where the
cancel request would never be sent.

Fixes #9416
Heavy inspiration drawn from the solutions proposed there.
1 parent 37ac222
History
File Mode Size
.github
Documentation
auth
client
clientv3
contrib
embed
etcdctl
etcdmain
etcdserver
functional
hack
integration
lease
logos
mvcc
pkg
proxy
raft
scripts
security
tests
tools
vendor
version
wal
.gitignore -rw-r--r-- 568 bytes
.header -rw-r--r-- 593 bytes
.travis.yml -rw-r--r-- 3.2 KB
.words -rw-r--r-- 1.2 KB
CONTRIBUTING.md -rw-r--r-- 3.2 KB
DCO -rw-r--r-- 1.4 KB
Dockerfile-release -rw-r--r-- 623 bytes
Dockerfile-release.arm64 -rw-r--r-- 222 bytes
Dockerfile-release.ppc64le -rw-r--r-- 224 bytes
LICENSE -rw-r--r-- 11.1 KB
MAINTAINERS -rw-r--r-- 790 bytes
MAINTAINERS_RULES.md -rw-r--r-- 703 bytes
Makefile -rw-r--r-- 17.5 KB
NOTICE -rw-r--r-- 126 bytes
OWNERS -rw-r--r-- 216 bytes
Procfile -rw-r--r-- 1.5 KB
Procfile.v2 -rw-r--r-- 1.5 KB
README.md -rw-r--r-- 8.2 KB
bill-of-materials.json -rw-r--r-- 7.3 KB
bill-of-materials.override.json -rw-r--r-- 254 bytes
build -rwxr-xr-x 2.6 KB
build.bat -rwxr-xr-x 51 bytes
build.ps1 -rw-r--r-- 2.7 KB
code-of-conduct.md -rw-r--r-- 3.0 KB
etcd.conf.yml.sample -rw-r--r-- 3.5 KB
functional.yaml -rw-r--r-- 7.2 KB
go.mod -rw-r--r-- 2.4 KB
go.sum -rw-r--r-- 21.0 KB
main.go -rw-r--r-- 1.0 KB
main_test.go -rw-r--r-- 1.1 KB
test -rwxr-xr-x 20.6 KB

README.md

back to top