From 1caa012a766dd5fe4a6eb645461a9b10214efbbb Mon Sep 17 00:00:00 2001 From: MeenakshiSachdeva <80676020+MeenakshiSachdeva@users.noreply.github.com> Date: Mon, 10 Jun 2024 21:49:38 +0530 Subject: [PATCH] Fix Filer Sync Issue: 5455 (#5663) --- weed/command/filer.go | 3 +++ weed/server/filer_server.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/weed/command/filer.go b/weed/command/filer.go index 1d8a6c4b8..877c4b5d5 100644 --- a/weed/command/filer.go +++ b/weed/command/filer.go @@ -63,6 +63,7 @@ type FilerOptions struct { diskType *string allowedOrigins *string exposeDirectoryData *bool + joinExistingFiler *bool } func init() { @@ -95,6 +96,7 @@ func init() { f.diskType = cmdFiler.Flag.String("disk", "", "[hdd|ssd|] hard drive or solid state drive or any tag") f.allowedOrigins = cmdFiler.Flag.String("allowedOrigins", "*", "comma separated list of allowed origins") f.exposeDirectoryData = cmdFiler.Flag.Bool("exposeDirectoryData", true, "whether to return directory metadata and content in Filer UI") + f.joinExistingFiler = cmdFiler.Flag.Bool("joinExistingFiler", false, "enable if new filer wants to join existing cluster") // start s3 on filer filerStartS3 = cmdFiler.Flag.Bool("s3", false, "whether to start S3 gateway") @@ -262,6 +264,7 @@ func (fo *FilerOptions) startFiler() { DownloadMaxBytesPs: int64(*fo.downloadMaxMBps) * 1024 * 1024, DiskType: *fo.diskType, AllowedOrigins: strings.Split(*fo.allowedOrigins, ","), + JoinExistingFiler: *fo.joinExistingFiler, }) if nfs_err != nil { glog.Fatalf("Filer startup error: %v", nfs_err) diff --git a/weed/server/filer_server.go b/weed/server/filer_server.go index ec1dff445..795cd3ccc 100644 --- a/weed/server/filer_server.go +++ b/weed/server/filer_server.go @@ -74,6 +74,7 @@ type FilerOption struct { DiskType string AllowedOrigins []string ExposeDirectoryData bool + JoinExistingFiler bool } type FilerServer struct { @@ -197,6 +198,9 @@ func NewFilerServer(defaultMux, readonlyMux *http.ServeMux, option *FilerOption) existingNodes := fs.filer.ListExistingPeerUpdates() startFromTime := time.Now().Add(-filer.LogFlushInterval) + if option.JoinExistingFiler { + startFromTime = time.Time{} + } if isFresh { glog.V(0).Infof("%s bootstrap from peers %+v", option.Host, existingNodes) if err := fs.filer.MaybeBootstrapFromPeers(option.Host, existingNodes, startFromTime); err != nil {