Skip to content

Commit 7bfdbd4

Browse files
committed
address review
Signed-off-by: Jakub Sztandera <oss@kubuxu.com>
1 parent 9fd93dc commit 7bfdbd4

3 files changed

Lines changed: 17 additions & 10 deletions

File tree

cmd/f3/observer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ var observerCmd = cli.Command{
6666
Usage: "The maximum length of time to keep the rotated files.",
6767
Value: 2 * 7 * 24 * time.Hour,
6868
},
69-
&cli.Int64Flag{
69+
&cli.Uint64Flag{
7070
Name: "retentionSize",
7171
Usage: "The maximum size of the rotated files in megabytes. If not set, no limit is applied.",
7272
Value: 0,
@@ -149,7 +149,7 @@ var observerCmd = cli.Command{
149149
observer.WithMaxBatchSize(cctx.Int("maxBatchSize")),
150150
observer.WithMaxBatchDelay(cctx.Duration("maxBatchDelay")),
151151
observer.WithChainExchangeMaxMessageAge(cctx.Duration("chainExchangeMaxMessageAge")),
152-
observer.WithMaxRetentionSize(cctx.Int64("retentionSize") * 1024 * 1024),
152+
observer.WithMaxRetentionSize(cctx.Uint64("retentionSize") * 1024 * 1024),
153153
}
154154

155155
var identity crypto.PrivKey

observer/observer.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ func (o *Observer) rotateMessages(ctx context.Context) error {
541541
if err := os.Remove(filepath.Join(o.rotatePath, entry.Name())); err != nil {
542542
logger.Errorw("Failed to remove retention policy for file", "file", entry.Name(), "err", err)
543543
} else {
544-
logger.Infow("Removed old file", "olderThan", o.retention, "file", entry.Name())
544+
logger.Infow("Removed file due to time retention policy", "olderThan", o.retention, "file", entry.Name())
545545
}
546546
} else {
547547
retainedSize += info.Size()
@@ -552,22 +552,25 @@ func (o *Observer) rotateMessages(ctx context.Context) error {
552552

553553
logger.Infow("Retention size", "retainedSize", retainedSize, "maxRetentionSize", o.maxRetentionSize)
554554

555-
if retainedSize > o.maxRetentionSize {
555+
if o.maxRetentionSize > 0 && retainedSize > o.maxRetentionSize {
556556
logger.Infow("Retention size exceeded, deleting oldest files", "retainedSize", retainedSize, "maxRetentionSize", o.maxRetentionSize)
557557
// sort retained by modification time, oldest last
558558
sort.Slice(retained, func(i, j int) bool {
559559
return retained[i].ModTime().After(retained[j].ModTime())
560560
})
561561
// iterate in reverse order to delete oldest first
562562
for i := len(retained) - 1; i >= 0; i-- {
563+
fi := retained[i]
563564
if retainedSize < o.maxRetentionSize {
564565
break
565566
}
566-
if err := os.Remove(filepath.Join(o.rotatePath, retained[i].Name())); err != nil {
567-
logger.Errorw("Failed to remove retention policy for file", "file", retained[i].Name(), "err", err)
567+
if err := os.Remove(filepath.Join(o.rotatePath, fi.Name())); err != nil {
568+
logger.Errorw("Failed to remove retention policy for file",
569+
"file", fi.Name(), "err", err)
568570
} else {
569-
logger.Infow("Removed old file", "olderThan", o.retention, "file", retained[i].Name())
570-
retainedSize -= retained[i].Size()
571+
logger.Infow("Removed file due to size retention policy",
572+
"size", fi.Size(), "file", fi.Name())
573+
retainedSize -= fi.Size()
571574
retained = retained[:i]
572575
}
573576
}

observer/options.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package observer
33
import (
44
"context"
55
"fmt"
6+
"math"
67
"time"
78

89
"github.com/filecoin-project/go-f3/blssig"
@@ -276,9 +277,12 @@ func WithRetention(retention time.Duration) Option {
276277
// This is weakly enforced, and the directory may grow larger than this
277278
// size. If the directory grows larger than this size, the oldest files
278279
// will be deleted until the directory size is below this size.
279-
func WithMaxRetentionSize(size int64) Option {
280+
func WithMaxRetentionSize(size uint64) Option {
280281
return func(o *options) error {
281-
o.maxRetentionSize = size
282+
if size > math.MaxInt64 {
283+
return fmt.Errorf("max retention size must be less than or equal to %d", math.MaxInt64)
284+
}
285+
o.maxRetentionSize = int64(size)
282286
return nil
283287
}
284288
}

0 commit comments

Comments
 (0)