Root Cause
The backend commits pending changes into boltdb per 100 ms by default.
When brand-new member starts, that member will save member into
backend by `MustSaveMemberToBackend`. However, it doesn't force change
into boltdb. It depends on backend's auto-commit per 100ms.
If auto-commit happens after `UpdateStorageVersion`, the `UpdateStorageVersion`
will fail on `missing confstate information`. The confstate information
is handled by commit-prehook. Once `UpdateStorageVersion` fails,
`TestSnapshotStatus` won't have another chance to do that because that
server has been closed. So without storage version information, hash of boltdb
data is not expected.
How to reproduce it?
```diff
diff --git a/etcdutl/snapshot/v3_snapshot_test.go b/etcdutl/snapshot/v3_snapshot_test.go
index c2b3d5202..cd88ff995 100644
--- a/etcdutl/snapshot/v3_snapshot_test.go
+++ b/etcdutl/snapshot/v3_snapshot_test.go
@@ -141,6 +141,7 @@ func createDB(t *testing.T, generateContent func(*etcdserver.EtcdServer)) string
t.Helper()
cfg := embed.NewConfig()
+ cfg.BackendBatchInterval = 5 * time.Second
cfg.LogLevel = "fatal"
cfg.Dir = t.TempDir()
```
```bash
➜ snapshot git:(deflaky-TestSnapshotStatus) ✗ go test -v -run "^TestSnapshotStatus$" -count 1 ./
=== RUN TestSnapshotStatus
v3_snapshot_test.go:47:
Error Trace: /home/weifu/workspace/etcd/etcdutl/snapshot/v3_snapshot_test.go:47
Error: Not equal:
expected: 0x62132b4d
actual : 0x6bf96324
Test: TestSnapshotStatus
--- FAIL: TestSnapshotStatus (0.14s)
FAIL
FAIL go.etcd.io/etcd/etcdutl/v3/snapshot 0.154s
FAIL
```
How to fix?
Change `BackendBatchLimit` to `1` so that we can force-commit during
`MustSaveMemberToBackend`.
Signed-off-by: Wei Fu <fuweid89@gmail.com>
For some reason, the goword check has been passing while the file
`tests/integration/embed/embed_proxy_test.go` has an error in the godoc.
Update it so it doesn't show the error anymore.
Signed-off-by: Ivan Valdes <ivan@vald.es>
* Wrap script in functions, add a main function, and call them from it.
* Make environment variables local inside the function scope to avoid
unexpected behaviors by the running environment-supplied variables.
* Fix the typo in the "REPOSITORY" environment variable.
* Rename the input "IMAGE" to "TEST_IMAGE" to avoid clashing with the
environment variable from the Prow infrastructure.
Signed-off-by: Ivan Valdes <ivan@vald.es>
Downgraded severity of 'etcdMembersDown' from 'critical' to 'warning' as a single etcd member being not available should not be a problem for etcd's quorum. If the quorum would not be fulfilled, 'etcdInsufficientMembers' should fire. In addition the 'for' interval was extended from '10m' to '20m' as e.g. a node reboot with a big physical node takes usually longer than 10 minutes.
Signed-off-by: Sebastian Gaiser <sebastiangaiser@users.noreply.github.com>
It wrongly asked the API user to use the last key of previous response
when they should append "\x00" to exclude the last key from the contents
of the next requested page.
Signed-off-by: Aleksander Mistewicz <amistewicz@google.com>