aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2018-11-29 00:07:54 -0800
committerChris Lu <chris.lu@gmail.com>2018-11-29 00:07:54 -0800
commit7a6f49cd420aad9416c4c99e53e621a43b3cd45e (patch)
tree3daf2d7695d699ce141c32e562b8021dcbb06fe9
parentceca078acb8607f5d3252356617cf630ff6b4be8 (diff)
downloadseaweedfs-7a6f49cd420aad9416c4c99e53e621a43b3cd45e.tar.xz
seaweedfs-7a6f49cd420aad9416c4c99e53e621a43b3cd45e.zip
refactor a bit more
fix https://github.com/chrislusf/seaweedfs/issues/777
-rw-r--r--weed/filer2/filer.go18
-rw-r--r--weed/server/filer_grpc_server.go2
2 files changed, 11 insertions, 9 deletions
diff --git a/weed/filer2/filer.go b/weed/filer2/filer.go
index 0dde08d04..8e8528e99 100644
--- a/weed/filer2/filer.go
+++ b/weed/filer2/filer.go
@@ -132,13 +132,7 @@ func (f *Filer) CreateEntry(entry *Entry) error {
return fmt.Errorf("insert entry %s: %v", entry.FullPath, err)
}
} else {
- if oldEntry.IsDirectory() && !entry.IsDirectory() {
- return fmt.Errorf("existing %s is a directory", entry.FullPath)
- }
- if !oldEntry.IsDirectory() && entry.IsDirectory() {
- return fmt.Errorf("existing %s is a file", entry.FullPath)
- }
- if err := f.store.UpdateEntry(entry); err != nil {
+ if err := f.UpdateEntry(oldEntry, entry); err != nil {
return fmt.Errorf("update entry %s: %v", entry.FullPath, err)
}
}
@@ -150,7 +144,15 @@ func (f *Filer) CreateEntry(entry *Entry) error {
return nil
}
-func (f *Filer) UpdateEntry(entry *Entry) (err error) {
+func (f *Filer) UpdateEntry(oldEntry, entry *Entry) (err error) {
+ if oldEntry != nil {
+ if oldEntry.IsDirectory() && !entry.IsDirectory() {
+ return fmt.Errorf("existing %s is a directory", entry.FullPath)
+ }
+ if !oldEntry.IsDirectory() && entry.IsDirectory() {
+ return fmt.Errorf("existing %s is a file", entry.FullPath)
+ }
+ }
return f.store.UpdateEntry(entry)
}
diff --git a/weed/server/filer_grpc_server.go b/weed/server/filer_grpc_server.go
index 04e68bbc2..ca318db05 100644
--- a/weed/server/filer_grpc_server.go
+++ b/weed/server/filer_grpc_server.go
@@ -165,7 +165,7 @@ func (fs *FilerServer) UpdateEntry(ctx context.Context, req *filer_pb.UpdateEntr
return &filer_pb.UpdateEntryResponse{}, err
}
- if err = fs.filer.UpdateEntry(newEntry); err == nil {
+ if err = fs.filer.UpdateEntry(entry, newEntry); err == nil {
fs.filer.DeleteChunks(unusedChunks)
fs.filer.DeleteChunks(garbages)
}