aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-05-26 14:42:18 -0700
committerChris Lu <chris.lu@gmail.com>2021-05-26 14:42:21 -0700
commit1a70cb9b631b95be1c0b07cb0e93e9e68be6ac23 (patch)
tree61d5241616d6383fd4fdbbc9fe9c559c41a81aea
parente699d16c85cccfcb6835392832102f02d10f955b (diff)
downloadseaweedfs-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.go17
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
}