diff options
| author | Henco Appel <hencoappel+github@gmail.com> | 2024-04-02 16:31:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-02 08:31:40 -0700 |
| commit | 2a88da4de757630a7d35779867f24c66c71ae7a9 (patch) | |
| tree | 2171171b9581b55495bfcafcbdb7497cca11ab0e /weed/storage/backend | |
| parent | df9031e19a96a97f12613d7b4c90eb19b265d311 (diff) | |
| download | seaweedfs-2a88da4de757630a7d35779867f24c66c71ae7a9.tar.xz seaweedfs-2a88da4de757630a7d35779867f24c66c71ae7a9.zip | |
fix: always close volume file (#4530) (#5459)
If sync fails then close is never called. We should always be calling
close on the file.
Co-authored-by: Hendrik Appel <happel@europe.altair.com>
Diffstat (limited to 'weed/storage/backend')
| -rw-r--r-- | weed/storage/backend/disk_file.go | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/weed/storage/backend/disk_file.go b/weed/storage/backend/disk_file.go index 050ded613..68ffbd7e7 100644 --- a/weed/storage/backend/disk_file.go +++ b/weed/storage/backend/disk_file.go @@ -81,13 +81,20 @@ func (df *DiskFile) Close() error { if df.File == nil { return nil } - if err := df.Sync(); err != nil { - return err + err := df.Sync() + var err1 error + if df.File != nil { + // always try to close + err1 = df.File.Close() } - if err := df.File.Close(); err != nil { + // assume closed + df.File = nil + if err != nil { return err } - df.File = nil + if err1 != nil { + return err1 + } return nil } |
