diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-05-26 14:42:18 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-05-26 14:42:21 -0700 |
| commit | 1a70cb9b631b95be1c0b07cb0e93e9e68be6ac23 (patch) | |
| tree | 61d5241616d6383fd4fdbbc9fe9c559c41a81aea | |
| parent | e699d16c85cccfcb6835392832102f02d10f955b (diff) | |
| download | seaweedfs-1a70cb9b631b95be1c0b07cb0e93e9e68be6ac23.tar.xz seaweedfs-1a70cb9b631b95be1c0b07cb0e93e9e68be6ac23.zip | |
local sink: write and update files
fix issues with https://github.com/chrislusf/seaweedfs/issues/2084
| -rw-r--r-- | weed/replication/sink/localsink/local_sink.go | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/weed/replication/sink/localsink/local_sink.go b/weed/replication/sink/localsink/local_sink.go index e40ad8bb6..f3d3862ee 100644 --- a/weed/replication/sink/localsink/local_sink.go +++ b/weed/replication/sink/localsink/local_sink.go @@ -8,7 +8,6 @@ import ( "github.com/chrislusf/seaweedfs/weed/replication/sink" "github.com/chrislusf/seaweedfs/weed/replication/source" "github.com/chrislusf/seaweedfs/weed/util" - "io/ioutil" "os" "path/filepath" "strings" @@ -86,8 +85,18 @@ func (localsink *LocalSink) CreateEntry(key string, entry *filer_pb.Entry, signa } } + if entry.IsDirectory { + return os.Mkdir(key, os.FileMode(entry.Attributes.FileMode)) + } + + dstFile, err := os.OpenFile(key, os.O_RDWR|os.O_CREATE|os.O_TRUNC, os.FileMode(entry.Attributes.FileMode)) + if err != nil { + return err + } + defer dstFile.Close() + writeFunc := func(data []byte) error { - writeErr := ioutil.WriteFile(key, data, 0755) + _, writeErr := dstFile.Write(data) return writeErr } @@ -104,5 +113,7 @@ func (localsink *LocalSink) UpdateEntry(key string, oldEntry *filer_pb.Entry, ne } glog.V(4).Infof("Update Entry key: %s", key) // do delete and create - return false, nil + foundExistingEntry = util.FileExists(key) + err = localsink.CreateEntry(key, newEntry, signatures) + return } |
