6c40b2b5d4
mvcc/backend: defrag to block concurrent read requests while resetting tx
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2018-03-16 03:29:18 -04:00
8a518b01c4
*: revert "internal/mvcc" change
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2018-02-26 17:11:40 -08:00
80d15948bc
*: move "mvcc" to "internal/mvcc"
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2018-01-26 11:14:41 -08:00
349a377a67
*: move "lease" to "internal/lease"
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2018-01-26 11:09:29 -08:00
89221a25b8
mvcc : Fix Govet errors
2018-01-25 02:30:37 -05:00
0b1b82aff2
mvcc: check null before set FillPercent not to panic
...
Since CreateBucketIfNotExists() can return nil when it gets an error,
accessing FillPercent must be done after a nil check, not to cause
a panic.
2018-01-08 11:34:34 -08:00
82a164e3b9
mvcc: make test struct fields unexported
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2017-12-31 13:20:41 -08:00
fc3b59046f
mvcc: allow clients to assign watcher IDs
...
This allows for watchers to be created concurrently
without needing potentially complex and latency-adding
queuing on the client.
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2017-12-31 13:20:40 -08:00
76dd9d56a1
mvcc: clean-up godoc in key_index.go
...
Minor clean-up.
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2017-12-18 13:20:00 -08:00
2e95ace82b
mvcc: fetch revisions with current revision, not 0, in HashByRev
...
It was getting revisions with "atRev==0", which makes
"available" from "keep" method always empty since
"walk" on "keyIndex" only returns true.
"available" should be populated with all revisions to be
kept if the compaction happens with the given revision.
But, "available" was being empty when "kvindex.Keep(0)"
since it's always the case that "rev.main > atRev==0".
Fix https://github.com/coreos/etcd/issues/9022 .
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2017-12-18 12:17:06 -08:00
bcd5390b35
*: regenerate protobuf, grpc-gateway
...
Signed-off-by: Gyuho Lee <gyuhox@gmail.com >
2017-12-07 21:31:13 -08:00
9154b31bf3
mvcc: move 'keyi' define before holding locks
...
To make it consistent with other code paths.
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-10-05 10:06:28 -07:00
4fa1dd196c
*: make receiver names consistent
2017-09-12 03:54:04 -07:00
f65aee0759
*: replace 'golang.org/x/net/context' with 'context'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-09-07 13:39:42 -07:00
9d79d5fe65
mvcc: don't allocate keys when computing Revisions
2017-08-31 13:23:23 -07:00
be7d488982
mvcc: add range benchmark for fetching 100 keys
2017-08-31 13:23:23 -07:00
896447ed99
mvcc: only remove watch cancel after cancel completes
...
If Close() is called before Cancel()'s cancel() completes, the
watch channel will be closed while the watch is still in the
synced list. If there's an event, etcd will try to write to a
closed channel. Instead, remove the watch from the bookkeeping
structures only after cancel completes, so Close() will always
call it.
Fixes #8443
2017-08-28 17:06:33 -07:00
bd53ae5680
mvcc: test concurrently closing watch streams and canceling watches
...
Triggers a race that causes a write to a closed watch stream channel.
2017-08-28 17:06:32 -07:00
f58c0cfb66
mvcc: Revisions() method for index to avoid key allocation
...
Save another alloc on the one key path.
2017-08-21 11:30:02 -07:00
13041c15ba
mvcc: sending events after restore
...
Fixes : #8411
2017-08-21 10:32:49 -07:00
8b872196d0
backend: cache buckets in read tx
...
Saves an alloc and about 10% of Range() time.
2017-08-21 02:16:55 -07:00
10b65c97dd
mvcc: benchmark Range() on a single key
2017-08-21 00:14:46 -07:00
ccd1bb1780
mvcc: test keys gauge is reloaded correctly on restore
2017-08-10 09:21:39 -07:00
32866572bf
mvcc: reset keys gauge on restore
...
Fixes #8388
2017-08-10 08:37:50 -07:00
df5a3d15ce
mvcc: increase rev for TestHashKVWhenCompacting
2017-07-31 17:59:49 -07:00
bb86c327e2
mvcc: HashKV gets keep from kvindex.Keep
2017-07-31 17:59:49 -07:00
4c2c5b0084
mvcc: add tests for Keep
2017-07-31 17:59:42 -07:00
7b8fb3cf0a
mvcc: add and implement Keep api to index
...
Keep finds all revisions to be kept for a Compaction at the given rev.
2017-07-31 14:04:03 -07:00
451b062184
mvcc/backend: add TestBackendWritebackForEach to backend_test.go
2017-07-28 09:39:48 -07:00
785deebd62
mvcc/backend: enforce ordering for UnsafeForEach in read_tx.go
...
This pr changes UnsafeForEach to traverse on boltdb before on the buffer.
This ordering guarantees that UnsafeForEach traverses in the same order
before or after the commit of buffer.
2017-07-28 09:30:23 -07:00
2a348fb8e9
Merge pull request #8263 from fanminshi/hash_by_rev
...
api: hash by rev
2017-07-26 11:22:33 -07:00
8609521ce2
mvcc: add TestHashKVWhenCompacting to kvstore_test
2017-07-26 09:48:29 -07:00
deca9879c2
mvcc: add HashByRev to kv.go
...
HashByRev computes the hash of all MVCC keys up to a given revision.
2017-07-25 17:00:46 -07:00
c06953ae08
mvcc: Add metric for count of db key revisions compacted.
...
When digging into etcd/boltdb "storage space exceeded" issues, this metric may help answer questions about if/when compactions occured and how much data was freed.
2017-07-20 10:07:56 -07:00
e9d096ae6b
mvcc: don't allocate end revision while computing range
...
Use 'nil' since it's only reading a single key. Also preallocates
the result slice based on limit / number of revisions fetched.
Fixes #8208
2017-07-06 15:59:27 -07:00
870302afa6
mvcc/backend: enable 'NoFreelistSync' by default (linux)
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-07-05 16:10:04 -07:00
318e9c766f
*: replace 'boltdb' import paths with 'coreos/bbolt'
...
Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com >
2017-07-05 14:32:13 -07:00
522e75cb4f
mvcc: use GaugeFunc metric to load db size when requested
...
Relying on mvcc to set the db size metric can cause it to
miss size changes when a txn commits after the last write
completes before a quiescent period. Instead, load the
db size on demand.
Fixes #8146
2017-06-21 23:58:37 -07:00
51a568aa81
mvcc: restore into tree index with one key index
...
Clobbering the mvcc kvindex with new keyIndexes for each restore
chunk would cause index corruption by dropping historical information.
2017-06-19 12:04:01 -07:00
02164874d9
mvcc: test restore and deletes with small chunk sizes
2017-06-19 12:04:01 -07:00
7f149d8fb6
mvcc: set db size metric on restore
...
Fixes #8080
2017-06-16 11:27:34 -07:00
da48f1feaf
mvcc: create TxnWrites from TxnRead with NewReadOnlyTxnWrite
...
Already used internally by mvcc, but needed by etcdserver txns.
2017-06-09 09:20:38 -07:00
300feea177
Merge pull request #8052 from heyitsanthony/watch-victim-test
...
mvcc: test watch victim/delay path
2017-06-08 11:10:33 -07:00
83b2ea2f60
mvcc: test watch victim/delay path
...
Current tests don't normally trigger the watch victim path because the
constants are too large; set the constants to small values and hammer
the store to cause watch delivery delays.
2017-06-07 17:02:00 -07:00
0352ce79b8
mvcc: count range/put/del operations for txns
...
Txns were previously only bumping the txn counter; now bumps all operation
counters.
2017-06-07 16:53:50 -07:00
fd71da47d1
mvcc: remove unused store.Equals function
2017-06-07 09:25:42 -07:00
ef63abdf7f
mvcc: don't use pointer for storeTxnRead in storeTxnWrite
...
Saves an allocation when creating a storeTxnWrite.
2017-06-06 09:51:57 -07:00
6846e49edf
Merge pull request #7859 from heyitsanthony/cache-consistent-get
...
mvcc: cache consistent index
2017-05-26 10:52:53 -07:00
ac4855e911
mvcc: benchmark ConsistentIndex
2017-05-26 09:49:40 -07:00
73dee0bec4
mvcc: cache consistentIndex
...
Called on every entry apply and boltdb requests aren't free.
2017-05-26 09:49:40 -07:00