@@ -40,6 +40,7 @@ func RedactResult(bundlePath string, input CollectorResult, additionalRedactors
4040 defer func () { <- limitCh }() // free up after the function execution has run
4141
4242 var reader io.Reader
43+ var readerCloseFn func () error // Function to close reader if needed
4344 if data == nil {
4445
4546 // Collected contents are in a file. Get a reader to the file.
@@ -83,12 +84,13 @@ func RedactResult(bundlePath string, input CollectorResult, additionalRedactors
8384 errorCh <- errors .Wrap (err , "failed to get reader" )
8485 return
8586 }
86- defer r .Close ()
8787
8888 reader = r
89+ readerCloseFn = r .Close // Ensure we close the file later
8990 } else {
9091 // Collected contents are in memory. Get a reader to the memory buffer.
9192 reader = bytes .NewBuffer (data )
93+ readerCloseFn = func () error { return nil } // No-op for in-memory data
9294 }
9395
9496 // If the file is .tar, .tgz or .tar.gz, it must not be redacted. Instead it is
@@ -106,6 +108,14 @@ func RedactResult(bundlePath string, input CollectorResult, additionalRedactors
106108 errorCh <- errors .Wrap (err , "failed to decompress file" )
107109 return
108110 }
111+
112+ // Ensure the reader is closed after processing
113+ if err := readerCloseFn (); err != nil {
114+ klog .Warningf ("Failed to close reader for %s: %v" , file , err )
115+ errorCh <- errors .Wrap (err , "failed to close reader" )
116+ return
117+ }
118+
109119 err = RedactResult (tmpDir , subResult , additionalRedactors )
110120 if err != nil {
111121 errorCh <- errors .Wrap (err , "failed to redact file" )
0 commit comments