mirror of
https://github.com/rclone/rclone.git
synced 2026-06-29 02:15:02 -04:00
The background chunk cleaner slept for the whole ChunkCleanInterval (default 1 minute) before checking its stop channel, and only ran CleanUpCache via the select default branch. This meant a cache that had been stopped by StopBackgroundRunners could keep running CleanUpCache for up to an interval afterwards. The cache backend tests all share a single on-disk chunk store (the TestInternalCache remote), so a lingering cleaner from a finished test could call CleanChunksBySize and os.RemoveAll chunks that a later, unrelated test had just written. The later test would then read a chunk back and get an unexpected EOF - eg TestInternalMaxChunkSizeRespected failing intermittently on CI. Wait on a timer and the stop channel together so a stop is honoured immediately and the cleaner can never run again once stopped.