diff options
| author | Andrew Garrett <andrewgarrett@google.com> | 2023-10-06 23:40:20 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-06 05:40:20 -0700 |
| commit | 082f67bfe95b3914a12669e6f9d1e934b602deb1 (patch) | |
| tree | d9c8e72d3797413dbbeb4a7a3c2f63e94de72832 | |
| parent | 0fd7222d65d58f81d08712702b4d5604a85ca92a (diff) | |
| download | seaweedfs-082f67bfe95b3914a12669e6f9d1e934b602deb1.tar.xz seaweedfs-082f67bfe95b3914a12669e6f9d1e934b602deb1.zip | |
Fix filer.backup local sink to propagate file mode changes (#4896)
| -rw-r--r-- | weed/replication/sink/localsink/local_sink.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/weed/replication/sink/localsink/local_sink.go b/weed/replication/sink/localsink/local_sink.go index 134d3985a..c6dddb80a 100644 --- a/weed/replication/sink/localsink/local_sink.go +++ b/weed/replication/sink/localsink/local_sink.go @@ -90,12 +90,24 @@ func (localsink *LocalSink) CreateEntry(key string, entry *filer_pb.Entry, signa return os.Mkdir(key, os.FileMode(entry.Attributes.FileMode)) } - dstFile, err := os.OpenFile(util.ToShortFileName(key), os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.FileMode(entry.Attributes.FileMode)) + mode := os.FileMode(entry.Attributes.FileMode) + dstFile, err := os.OpenFile(util.ToShortFileName(key), os.O_RDWR|os.O_CREATE|os.O_TRUNC, mode) if err != nil { return err } defer dstFile.Close() + fi, err := dstFile.Stat() + if err != nil { + return err + } + if fi.Mode() != mode { + glog.V(4).Infof("Modify file mode: %o -> %o", fi.Mode(), mode) + if err := dstFile.Chmod(mode); err != nil { + return err + } + } + writeFunc := func(data []byte) error { _, writeErr := dstFile.Write(data) return writeErr |
