aboutsummaryrefslogtreecommitdiff
path: root/weed/command/filer_remote_sync.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-09-02 07:07:16 -0700
committerChris Lu <chris.lu@gmail.com>2021-09-02 07:07:16 -0700
commit9a73b0e3c91630a2b11e57eaec3d9039a25a93c8 (patch)
tree02cf0dc7dd4559008d98767f93f569bfc9cc05bb /weed/command/filer_remote_sync.go
parente281f0fa8269db58fb20246aa241459a4bff520a (diff)
downloadseaweedfs-9a73b0e3c91630a2b11e57eaec3d9039a25a93c8.tar.xz
seaweedfs-9a73b0e3c91630a2b11e57eaec3d9039a25a93c8.zip
refactor
Diffstat (limited to 'weed/command/filer_remote_sync.go')
-rw-r--r--weed/command/filer_remote_sync.go35
1 files changed, 23 insertions, 12 deletions
diff --git a/weed/command/filer_remote_sync.go b/weed/command/filer_remote_sync.go
index e7088fc6c..1312a1045 100644
--- a/weed/command/filer_remote_sync.go
+++ b/weed/command/filer_remote_sync.go
@@ -107,11 +107,27 @@ func followUpdatesAndUploadToRemote(option *RemoteSyncOptions, filerSource *sour
lastOffsetTs := collectLastSyncOffset(option, mountedDir)
- client, err := remote_storage.GetRemoteStorage(remoteStorage)
+ eachEntryFunc, err := makeEventProcessor(remoteStorage, mountedDir, remoteStorageMountLocation, filerSource)
if err != nil {
return err
}
+ processEventFnWithOffset := pb.AddOffsetFunc(eachEntryFunc, 3*time.Second, func(counter int64, lastTsNs int64) error {
+ lastTime := time.Unix(0, lastTsNs)
+ glog.V(0).Infof("remote sync %s progressed to %v %0.2f/sec", *option.filerAddress, lastTime, float64(counter)/float64(3))
+ return remote_storage.SetSyncOffset(option.grpcDialOption, *option.filerAddress, mountedDir, lastTsNs)
+ })
+
+ return pb.FollowMetadata(*option.filerAddress, option.grpcDialOption, "filer.remote.sync",
+ mountedDir, []string{filer.DirectoryEtcRemote}, lastOffsetTs.UnixNano(), 0, processEventFnWithOffset, false)
+}
+
+func makeEventProcessor(remoteStorage *remote_pb.RemoteConf, mountedDir string, remoteStorageMountLocation *remote_pb.RemoteStorageLocation, filerSource *source.FilerSource) (pb.ProcessMetadataFunc, error) {
+ client, err := remote_storage.GetRemoteStorage(remoteStorage)
+ if err != nil {
+ return nil, err
+ }
+
handleEtcRemoteChanges := func(resp *filer_pb.SubscribeMetadataResponse) error {
message := resp.EventNotification
if message.NewEntry == nil {
@@ -137,8 +153,11 @@ func followUpdatesAndUploadToRemote(option *RemoteSyncOptions, filerSource *sour
return fmt.Errorf("unmarshal %s/%s: %v", filer.DirectoryEtcRemote, message.NewEntry.Name, err)
}
remoteStorage = conf
- client, err = remote_storage.GetRemoteStorage(remoteStorage)
- return err
+ if newClient, err := remote_storage.GetRemoteStorage(remoteStorage); err == nil {
+ client = newClient
+ } else {
+ return err
+ }
}
return nil
@@ -217,15 +236,7 @@ func followUpdatesAndUploadToRemote(option *RemoteSyncOptions, filerSource *sour
return nil
}
-
- processEventFnWithOffset := pb.AddOffsetFunc(eachEntryFunc, 3*time.Second, func(counter int64, lastTsNs int64) error {
- lastTime := time.Unix(0, lastTsNs)
- glog.V(0).Infof("remote sync %s progressed to %v %0.2f/sec", *option.filerAddress, lastTime, float64(counter)/float64(3))
- return remote_storage.SetSyncOffset(option.grpcDialOption, *option.filerAddress, mountedDir, lastTsNs)
- })
-
- return pb.FollowMetadata(*option.filerAddress, option.grpcDialOption, "filer.remote.sync",
- mountedDir, []string{filer.DirectoryEtcRemote}, lastOffsetTs.UnixNano(), 0, processEventFnWithOffset, false)
+ return eachEntryFunc, nil
}
func collectLastSyncOffset(option *RemoteSyncOptions, mountedDir string) (time.Time) {