aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-08-08 15:58:10 -0700
committerChris Lu <chris.lu@gmail.com>2021-08-08 15:58:10 -0700
commitdcf614a8c39d85bd10884d7feaa6aac8217c2946 (patch)
tree344d7c30e20dee5b7455566677f1c560789bdb18
parenteed26af26692779220c2fe08123250c527242ff7 (diff)
downloadseaweedfs-dcf614a8c39d85bd10884d7feaa6aac8217c2946.tar.xz
seaweedfs-dcf614a8c39d85bd10884d7feaa6aac8217c2946.zip
skip if the remote entry update is because of internal managerial operations
-rw-r--r--weed/command/filer_remote_sync.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/weed/command/filer_remote_sync.go b/weed/command/filer_remote_sync.go
index 8d176ce2a..be8d3faff 100644
--- a/weed/command/filer_remote_sync.go
+++ b/weed/command/filer_remote_sync.go
@@ -151,6 +151,10 @@ func followUpdatesAndUploadToRemote(option *RemoteSyncOptions, filerSource *sour
return nil
}
fmt.Printf("create: %+v\n", resp)
+ if !shouldSendToRemote(message.NewEntry) {
+ fmt.Printf("skipping creating: %+v\n", resp)
+ return nil
+ }
dest := toRemoteStorageLocation(util.FullPath(mountedDir), util.NewFullPath(message.NewParentPath, message.NewEntry.Name), remoteStorageMountLocation)
reader := filer.NewChunkStreamReader(filerSource, message.NewEntry.Chunks)
return client.WriteFile(dest, message.NewEntry, reader)
@@ -163,6 +167,10 @@ func followUpdatesAndUploadToRemote(option *RemoteSyncOptions, filerSource *sour
if message.OldEntry != nil && message.NewEntry != nil {
oldDest := toRemoteStorageLocation(util.FullPath(mountedDir), util.NewFullPath(resp.Directory, message.OldEntry.Name), remoteStorageMountLocation)
dest := toRemoteStorageLocation(util.FullPath(mountedDir), util.NewFullPath(message.NewParentPath, message.NewEntry.Name), remoteStorageMountLocation)
+ if !shouldSendToRemote(message.NewEntry) {
+ fmt.Printf("skipping updating: %+v\n", resp)
+ return nil
+ }
if resp.Directory == message.NewParentPath && message.OldEntry.Name == message.NewEntry.Name {
if isSameChunks(message.OldEntry.Chunks, message.NewEntry.Chunks) {
fmt.Printf("update meta: %+v\n", resp)
@@ -217,3 +225,16 @@ func isSameChunks(a, b []*filer_pb.FileChunk) bool {
}
return true
}
+
+func shouldSendToRemote(entry *filer_pb.Entry) bool {
+ if entry.RemoteEntry == nil {
+ return true
+ }
+ if entry.RemoteEntry.Size != int64(filer.FileSize(entry)) {
+ return true
+ }
+ if entry.RemoteEntry.LastModifiedAt < entry.Attributes.Mtime {
+ return true
+ }
+ return false
+}