From 89cbb1c558dbb580b9947b971cd626f45ab899fd Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Sun, 7 Jun 2026 20:45:03 -0700 Subject: [PATCH] admin: default -dataDir to "." so maintenance task state persists across restarts (#9856) admin: default -dataDir to "." so maintenance task state persists Previously -dataDir defaulted to empty, so the admin ran maintenance in memory only: task state was never saved and maintenance tasks (notably EC balance/rebuild) were re-issued every scan cycle without converging, churning EC shards (moves landed shards without their .ecx index, leaving EC volumes unloadable/missing shards). Default -dataDir to "." (the process working directory, which under the standard systemd unit is the admin's data dir) so state persists out of the box. --- weed/command/admin.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/weed/command/admin.go b/weed/command/admin.go index b90dd64c6..f823507bc 100644 --- a/weed/command/admin.go +++ b/weed/command/admin.go @@ -65,7 +65,7 @@ func init() { a.grpcPort = cmdAdmin.Flag.Int("port.grpc", 0, "gRPC server port for worker connections (default: http port + 10000)") a.master = cmdAdmin.Flag.String("master", "localhost:9333", "comma-separated master servers") a.masters = cmdAdmin.Flag.String("masters", "", "comma-separated master servers (deprecated, use -master instead)") - a.dataDir = cmdAdmin.Flag.String("dataDir", "", "directory to store admin configuration and data files") + a.dataDir = cmdAdmin.Flag.String("dataDir", ".", "directory to store admin configuration and data files (default current dir; required for maintenance task state to persist)") a.adminUser = cmdAdmin.Flag.String("adminUser", "admin", "admin interface username") a.adminPassword = cmdAdmin.Flag.String("adminPassword", "", "admin interface password (if empty, auth is disabled)") @@ -248,7 +248,6 @@ func runAdmin(cmd *Command, args []string) bool { fmt.Println("WARNING: Admin interface is running without authentication!") fmt.Println(" Set -adminPassword for production use") } - fmt.Printf("Starting SeaweedFS Admin Interface on port %d\n", *a.port) fmt.Printf("Worker gRPC server will run on port %d\n", *a.grpcPort) fmt.Printf("Masters: %s\n", *a.master)