From b15d060410119c91405fbf74f182e55467ff4877 Mon Sep 17 00:00:00 2001 From: Dean Sheather Date: Wed, 23 Apr 2025 03:31:43 +1000 Subject: [PATCH] fix(agent): return listed drives on failure on windows (#17505) The behavior of the partitions listing function from gopsutil is that it will return all partitions that didn't fail to be read, but will return something similar to a multierror. Errors are now ignored unless there are no drives returned. --- agent/ls.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/agent/ls.go b/agent/ls.go index 5c90e5e602..29392795d3 100644 --- a/agent/ls.go +++ b/agent/ls.go @@ -125,10 +125,14 @@ func listFiles(query LSRequest) (LSResponse, error) { } func listDrives() (LSResponse, error) { + // disk.Partitions() will return partitions even if there was a failure to + // get one. Any errored partitions will not be returned. partitionStats, err := disk.Partitions(true) - if err != nil { + if err != nil && len(partitionStats) == 0 { + // Only return the error if there were no partitions returned. return LSResponse{}, xerrors.Errorf("failed to get partitions: %w", err) } + contents := make([]LSFile, 0, len(partitionStats)) for _, a := range partitionStats { // Drive letters on Windows have a trailing separator as part of their name.