mirror of
https://github.com/rclone/rclone.git
synced 2026-01-06 18:43:50 +00:00
fs/cache: make sure we call the Shutdown method on backends
This change ensures we call the Shutdown method on backends when they drop out of the fs/cache and at program exit. Some backends implement the optional fs.Shutdowner interface. Until now, Shutdown is only checked and called, when a backend is wrapped (e.g. crypt, compress, ...). To have a general way to perform operations at the end of the backend lifecycle with proper error handling, we can call Shutdown at cache clear time. We add a finalize hook to the cache which will be called when values drop out of the cache. Previous discussion: https://forum.rclone.org/t/31336
This commit is contained in:
@@ -321,6 +321,12 @@ func Run(Retry bool, showStats bool, cmd *cobra.Command, f func() error) {
|
||||
}
|
||||
}
|
||||
|
||||
// clear cache and shutdown backends
|
||||
cache.Clear()
|
||||
if lastErr := accounting.GlobalStats().GetLastError(); cmdErr == nil {
|
||||
cmdErr = lastErr
|
||||
}
|
||||
|
||||
// Log the final error message and exit
|
||||
if cmdErr != nil {
|
||||
nerrs := accounting.GlobalStats().GetErrors()
|
||||
|
||||
Reference in New Issue
Block a user