From 9fcde3744761a44aeff706be1892697dbe5602ce Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Tue, 23 Apr 2024 10:18:52 +0200 Subject: [PATCH] Persist member data with lazyfs enabled Discovered turning off LazyFS before creating the report might result in empty server directory. This PR moves cluster shutdown to defer executed after we generate report and copies the data from lazyfs directory. Signed-off-by: Marek Siarkowicz --- tests/robustness/main_test.go | 3 +-- tests/robustness/report/report.go | 10 +++++++++- tests/robustness/report/wal.go | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/tests/robustness/main_test.go b/tests/robustness/main_test.go index 6863cfbb1..db9e483c3 100644 --- a/tests/robustness/main_test.go +++ b/tests/robustness/main_test.go @@ -70,7 +70,7 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s testSce if err != nil { t.Fatal(err) } - defer r.Cluster.Close() + defer forcestopCluster(r.Cluster) if s.failpoint == nil { s.failpoint, err = failpoint.PickRandom(r.Cluster) @@ -95,7 +95,6 @@ func testRobustness(ctx context.Context, t *testing.T, lg *zap.Logger, s testSce if err != nil { t.Fatal(err) } - forcestopCluster(r.Cluster) watchProgressNotifyEnabled := r.Cluster.Cfg.ServerConfig.ExperimentalWatchProgressNotifyInterval != 0 validateGotAtLeastOneProgressNotify(t, r.Client, s.watch.requestProgress || watchProgressNotifyEnabled) diff --git a/tests/robustness/report/report.go b/tests/robustness/report/report.go index a84a3d163..ede43ce79 100644 --- a/tests/robustness/report/report.go +++ b/tests/robustness/report/report.go @@ -81,8 +81,16 @@ func (r *TestReport) Report(t *testing.T, force bool) { func persistMemberDataDir(t *testing.T, lg *zap.Logger, member e2e.EtcdProcess, path string) { lg.Info("Saving member data dir", zap.String("member", member.Config().Name), zap.String("path", path)) - err := os.Rename(member.Config().DataDirPath, path) + err := os.Rename(memberDataDir(member), path) if err != nil { t.Fatal(err) } } + +func memberDataDir(member e2e.EtcdProcess) string { + lazyFS := member.LazyFS() + if lazyFS != nil { + return filepath.Join(lazyFS.LazyFSDir, "data") + } + return member.Config().DataDirPath +} diff --git a/tests/robustness/report/wal.go b/tests/robustness/report/wal.go index b521b37c6..47d3383c0 100644 --- a/tests/robustness/report/wal.go +++ b/tests/robustness/report/wal.go @@ -52,7 +52,7 @@ func LoadClusterPersistedRequests(lg *zap.Logger, path string) ([]model.EtcdRequ func PersistedRequestsCluster(lg *zap.Logger, cluster *e2e.EtcdProcessCluster) ([]model.EtcdRequest, error) { dataDirs := []string{} for _, proc := range cluster.Procs { - dataDirs = append(dataDirs, proc.Config().DataDirPath) + dataDirs = append(dataDirs, memberDataDir(proc)) } return PersistedRequestsDirs(lg, dataDirs) }