From 8318aa0113fe089a757faedd61132d0701cc91d5 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 15 Apr 2022 13:16:15 -0700 Subject: [PATCH] cancel active routine only after metadata has been saved (#14757) currently updated pool.bin was not saved properly, that would lead to unable to remove a pool upon a successful decommission. fixes #14756 --- cmd/erasure-server-pool-decom.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmd/erasure-server-pool-decom.go b/cmd/erasure-server-pool-decom.go index 2ff0644c3..a28185eae 100644 --- a/cmd/erasure-server-pool-decom.go +++ b/cmd/erasure-server-pool-decom.go @@ -900,7 +900,7 @@ func (z *erasureServerPools) DecommissionCancel(ctx context.Context, idx int) (e defer z.poolMetaMutex.Unlock() if z.poolMeta.DecommissionCancel(idx) { - z.decommissionCancelers[idx]() // cancel any active thread. + defer z.decommissionCancelers[idx]() // cancel any active thread. if err = z.poolMeta.save(ctx, z.serverPools); err != nil { return err } @@ -922,7 +922,7 @@ func (z *erasureServerPools) DecommissionFailed(ctx context.Context, idx int) (e defer z.poolMetaMutex.Unlock() if z.poolMeta.DecommissionFailed(idx) { - z.decommissionCancelers[idx]() // cancel any active thread. + defer z.decommissionCancelers[idx]() // cancel any active thread. if err = z.poolMeta.save(ctx, z.serverPools); err != nil { return err } @@ -944,7 +944,7 @@ func (z *erasureServerPools) CompleteDecommission(ctx context.Context, idx int) defer z.poolMetaMutex.Unlock() if z.poolMeta.DecommissionComplete(idx) { - z.decommissionCancelers[idx]() // cancel any active thread. + defer z.decommissionCancelers[idx]() // cancel any active thread. if err = z.poolMeta.save(ctx, z.serverPools); err != nil { return err }