aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
}