diff --git a/server/wal/wal_ro_segment.go b/server/wal/wal_ro_segment.go index 07601ab9..98baefb9 100644 --- a/server/wal/wal_ro_segment.go +++ b/server/wal/wal_ro_segment.go @@ -312,7 +312,7 @@ func (r *readOnlySegmentsGroup) TrimSegments(offset int64) error { err = multierr.Append(err, segment.Get().Delete()) r.openSegments.Remove(s) } else { - if segment, err2 := newReadOnlySegment(r.basePath, s); err != nil { + if segment, err2 := newReadOnlySegment(r.basePath, s); err2 != nil { err = multierr.Append(err, err2) } else { err = multierr.Append(err, segment.Delete()) diff --git a/server/wal/wal_ro_segment_test.go b/server/wal/wal_ro_segment_test.go index 77e92134..93cb605f 100644 --- a/server/wal/wal_ro_segment_test.go +++ b/server/wal/wal_ro_segment_test.go @@ -100,3 +100,17 @@ func TestRO_auto_recover_broken_index(t *testing.T) { assert.NoError(t, ro.Close()) } + +func TestReadOnlySegmentsGroupTrimSegments(t *testing.T) { + basePath := t.TempDir() + t.Run("when newReadOnlySegment failed", func(t *testing.T) { + readOnlySegments, err := newReadOnlySegmentsGroup(basePath) + assert.NoError(t, err) + + readOnlySegments.AddedNewSegment(0) + readOnlySegments.AddedNewSegment(10) + readOnlySegments.AddedNewSegment(20) + err = readOnlySegments.TrimSegments(11) + assert.Error(t, err) + }) +}