aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/backend
diff options
context:
space:
mode:
authorHenco Appel <hencoappel+github@gmail.com>2024-04-02 16:31:40 +0100
committerGitHub <noreply@github.com>2024-04-02 08:31:40 -0700
commit2a88da4de757630a7d35779867f24c66c71ae7a9 (patch)
tree2171171b9581b55495bfcafcbdb7497cca11ab0e /weed/storage/backend
parentdf9031e19a96a97f12613d7b4c90eb19b265d311 (diff)
downloadseaweedfs-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.go15
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
}