From 0fdacfed8faccb210caa2e5780c746732c22c108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Elek?= Date: Mon, 20 Nov 2023 09:46:06 +0100 Subject: [PATCH] satellite/durability: observer must reset between executions Change-Id: I8f5b951beba513b219c4bb5680658f5e8b54538d --- satellite/durability/observer.go | 6 ++++++ satellite/durability/observer_test.go | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/satellite/durability/observer.go b/satellite/durability/observer.go index 4ed4d9157a32..d3f344f04a46 100644 --- a/satellite/durability/observer.go +++ b/satellite/durability/observer.go @@ -126,10 +126,16 @@ func (c *Report) Start(ctx context.Context, startTime time.Time) error { return errs.Wrap(err) } c.aliasMap = aliasMap + c.resetStat() c.classifyNodeAliases() return nil } +func (c *Report) resetStat() { + c.healthStat = make(map[string]*HealthStat) + c.busFactor = HealthStat{} +} + func (c *Report) classifyNodeAliases() { c.classID = make(map[string]classID, len(c.classifiers)) c.className = make(map[classID]string, len(c.classifiers)) diff --git a/satellite/durability/observer_test.go b/satellite/durability/observer_test.go index f0834d49ed35..dfa960ffbc31 100644 --- a/satellite/durability/observer_test.go +++ b/satellite/durability/observer_test.go @@ -103,6 +103,18 @@ func TestDurability(t *testing.T) { require.Equal(t, segment1.StreamID.String()+"/0", c.healthStat["net:127.0.0.0"].Exemplar) require.Equal(t, 2, c.healthStat["net:127.0.1.0"].Min()) require.Equal(t, 3, c.healthStat["net:127.0.2.0"].Min()) + + // usually called with c.Start() + c.resetStat() + + fork, err = c.Fork(ctx) + require.NoError(t, err) + err = c.Join(ctx, fork) + require.NoError(t, err) + + // second run supposed to have zero stat. + require.Nil(t, c.healthStat["net:127.0.0.0"]) + } func TestDurabilityUnknownNode(t *testing.T) {