From ab2bb21e709411ce1f89e2ca616fe3fb9fcc9e0e Mon Sep 17 00:00:00 2001 From: slasher Date: Mon, 16 Jun 2025 10:45:40 +0800 Subject: [PATCH] feat(cli): force write to readonly cluster . #1000172452 Signed-off-by: slasher --- blobstore/access/controller/cluster.go | 6 ++++++ blobstore/cli/access/access.go | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/blobstore/access/controller/cluster.go b/blobstore/access/controller/cluster.go index f36b3aaf7..845014e32 100644 --- a/blobstore/access/controller/cluster.go +++ b/blobstore/access/controller/cluster.go @@ -38,6 +38,9 @@ import ( "github.com/cubefs/cubefs/blobstore/util/log" ) +// just for cli write to readonly initialised cluster. +var ForceWriteReadonlyCluster = false + // AlgChoose algorithm of choose cluster type AlgChoose uint32 @@ -265,6 +268,9 @@ func (c *clusterControllerImpl) loadWithConfig() error { clusterInfo.Available = stat.BlobNodeSpaceStat.WritableSpace clusterInfo.Nodes = cs.Hosts clusterInfo.Readonly = stat.ReadOnly + if clusterInfo.Readonly && ForceWriteReadonlyCluster { + clusterInfo.Readonly = false + } allClusters[cs.ClusterID] = &cluster{client: cmCli, clusterInfo: clusterInfo} diff --git a/blobstore/cli/access/access.go b/blobstore/cli/access/access.go index 980f8c6a8..d52ee2b15 100644 --- a/blobstore/cli/access/access.go +++ b/blobstore/cli/access/access.go @@ -20,6 +20,7 @@ import ( "github.com/desertbit/grumble" "github.com/hashicorp/consul/api" + "github.com/cubefs/cubefs/blobstore/access/controller" "github.com/cubefs/cubefs/blobstore/access/stream" "github.com/cubefs/cubefs/blobstore/api/access" "github.com/cubefs/cubefs/blobstore/cli/common" @@ -163,6 +164,17 @@ func Register(app *grumble.App) { } app.AddCommand(accessCommand) + accessCommand.AddCommand(&grumble.Command{ + Name: "writereadonly", + Help: "force write to readonly cluster", + Run: func(c *grumble.Context) error { + controller.ForceWriteReadonlyCluster = c.Flags.Bool("forcewrite") + return nil + }, + Flags: func(f *grumble.Flags) { + f.BoolL("forcewrite", false, "force write to readonly cluster") + }, + }) accessCommand.AddCommand(&grumble.Command{ Name: "put", Help: "put file",