etcd/tests
Wei Fu 3ddcb3ddef test: deflake TestDowngradeUpgradeClusterOf3 timeout
In the TestDowngradeUpgradeCluster case, the brand-new cluster is using
simple-config-changer, which means that entries has been committed
before leader election and these entries will be applied when etcdserver
starts to receive apply-requests. The simple-config-changer will mark
the `confState` dirty and the storage backend precommit hook will update
the `confState`.

For the new cluster, the storage version is nil at the beginning. And
it will be v3.5 if the `confState` record has been committed. And it
will be >v3.5 if the `storageVersion` record has been committed.

When the new cluster is ready, the leader will set init cluster version
with v3.6.x. And then it will trigger the `monitorStorageVersion` to
update the `storageVersion` to v3.6.x. If the `confState` record has
been updated before cluster version update, we will get storageVersion
record.

If the storage backend doesn't commit in time, the
`monitorStorageVersion` won't update the version because of `cannot
detect storage schema version: missing confstate information`.

And then we file the downgrade request before next round of
`monitorStorageVersion`(per 4 second), the cluster version will be
v3.5.0 which is equal to the `UnsafeDetectSchemaVersion`'s result.
And we won't see that `The server is ready to downgrade`.

It is easy to reproduce the issue if you use cpuset or taskset to limit
in two cpus.

So, we should wait for the new cluster's storage ready before downgrade
request.

Fixes: #14540

Signed-off-by: Wei Fu <fuweid89@gmail.com>
2022-11-02 22:50:31 +08:00
..
common tests: TestRunner.NewCluster accepts options 2022-10-31 15:26:08 +08:00
e2e test: deflake TestDowngradeUpgradeClusterOf3 timeout 2022-11-02 22:50:31 +08:00
fixtures *: added client-{client,key}-file parameters for supporting separate client and server certs when communicating between peers 2021-02-28 14:37:56 +00:00
framework test: deflake TestDowngradeUpgradeClusterOf3 timeout 2022-11-02 22:50:31 +08:00
functional bump go version to 1.19.3 to address security fixes 2022-11-02 09:07:22 +08:00
integration clientv3: fix the design & implementation of double barrier 2022-10-20 16:24:20 +08:00
linearizability tests: Add linearizability tests scenario for #14370 2022-10-24 13:36:12 +02:00
manual bump go version to 1.19.3 to address security fixes 2022-11-02 09:07:22 +08:00
Dockerfile replace gobin with go install 2022-02-08 05:41:21 +08:00
LICENSE ./test,./scripts: Update go.sum and bill-of-materials generation logic (and refresh bom). 2020-10-07 15:38:39 +02:00
go.mod tests: Validate etcd linearizability 2022-10-23 06:41:38 +02:00
go.sum tests: Validate etcd linearizability 2022-10-23 06:41:38 +02:00
revive.toml tests: integrate "github.com/mgechev/revive" to fmt tests 2018-07-21 15:49:53 -07:00
semaphore.test.bash github actions: Move e2e to separate workflow and remove semaphoreci 2021-05-12 14:17:17 +02:00