From 2b604f1f29ad036d6bd6a451a5c4afbe1cf491b3 Mon Sep 17 00:00:00 2001 From: Paul Rogers <129207811+paul1r@users.noreply.github.com> Date: Tue, 28 Oct 2025 10:02:53 -0400 Subject: [PATCH] fix(wal): Move WAL disk check to platform-specific code (#19619) --- pkg/ingester/wal.go | 17 ----------------- pkg/ingester/wal_unix.go | 23 +++++++++++++++++++++++ pkg/ingester/wal_windows.go | 18 ++++++++++++++++++ 3 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 pkg/ingester/wal_unix.go create mode 100644 pkg/ingester/wal_windows.go diff --git a/pkg/ingester/wal.go b/pkg/ingester/wal.go index f9e122ea31..38f705daa4 100644 --- a/pkg/ingester/wal.go +++ b/pkg/ingester/wal.go @@ -4,7 +4,6 @@ import ( "flag" "fmt" "sync" - "syscall" "time" "go.uber.org/atomic" @@ -170,22 +169,6 @@ func (w *walWrapper) checkpointWriter() *WALCheckpointWriter { } } -// checkDiskUsage returns the disk usage percentage (0.0 to 1.0) for the WAL directory. -func (w *walWrapper) checkDiskUsage() (float64, error) { - var stat syscall.Statfs_t - if err := syscall.Statfs(w.cfg.Dir, &stat); err != nil { - return 0, err - } - - // Calculate usage percentage - total := stat.Blocks * uint64(stat.Bsize) - free := stat.Bfree * uint64(stat.Bsize) - used := total - free - usagePercent := float64(used) / float64(total) - - return usagePercent, nil -} - func (w *walWrapper) run() { level.Info(util_log.Logger).Log("msg", "started", "component", "wal") defer w.wait.Done() diff --git a/pkg/ingester/wal_unix.go b/pkg/ingester/wal_unix.go new file mode 100644 index 0000000000..1b7a04d49b --- /dev/null +++ b/pkg/ingester/wal_unix.go @@ -0,0 +1,23 @@ +//go:build !windows + +package ingester + +import ( + "syscall" +) + +// checkDiskUsage returns the disk usage percentage (0.0 to 1.0) for the WAL directory. +func (w *walWrapper) checkDiskUsage() (float64, error) { + var stat syscall.Statfs_t + if err := syscall.Statfs(w.cfg.Dir, &stat); err != nil { + return 0, err + } + + // Calculate usage percentage + total := stat.Blocks * uint64(stat.Bsize) + free := stat.Bfree * uint64(stat.Bsize) + used := total - free + usagePercent := float64(used) / float64(total) + + return usagePercent, nil +} diff --git a/pkg/ingester/wal_windows.go b/pkg/ingester/wal_windows.go new file mode 100644 index 0000000000..fdbf86afe3 --- /dev/null +++ b/pkg/ingester/wal_windows.go @@ -0,0 +1,18 @@ +//go:build windows + +package ingester + +import ( + "syscall" +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + procGetDiskFreeSpaceEx = kernel32.NewProc("GetDiskFreeSpaceExW") +) + +// checkDiskUsage returns the disk usage percentage (0.0 to 1.0) for the WAL directory. +func (w *walWrapper) checkDiskUsage() (float64, error) { + // Disable this for Windows for now + return 0.0, nil +}