From df93ff92bad519836bfb7a95ffc2de357eb231a8 Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Wed, 24 Apr 2024 23:54:24 +0800 Subject: [PATCH] fix: site-replication will reset group status when add user (#19594) --- .github/workflows/multipart/migrate.sh | 37 ++++++++++++++++++++++++++ cmd/site-replication.go | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/.github/workflows/multipart/migrate.sh b/.github/workflows/multipart/migrate.sh index e1bd484ca..ea8f5a3f0 100755 --- a/.github/workflows/multipart/migrate.sh +++ b/.github/workflows/multipart/migrate.sh @@ -106,6 +106,43 @@ if [ $failed_count_site2 -ne 0 ]; then exit 1 fi +# Add user group test +./mc admin user add site1 site-replication-issue-user site-replication-issue-password +./mc admin group add site1 site-replication-issue-group site-replication-issue-user + +max_wait_attempts=30 +wait_interval=5 + +attempt=1 +while true; do + diff <(./mc admin group info site1 site-replication-issue-group) <(./mc admin group info site2 site-replication-issue-group) + + if [[ $? -eq 0 ]]; then + echo "Outputs are consistent." + break + fi + + remaining_attempts=$((max_wait_attempts - attempt)) + if ((attempt >= max_wait_attempts)); then + echo "Outputs remain inconsistent after $max_wait_attempts attempts. Exiting with error." + exit 1 + else + echo "Outputs are inconsistent. Waiting for $wait_interval seconds (attempt $attempt/$max_wait_attempts)." + sleep $wait_interval + fi + + ((attempt++)) +done + +status=$(./mc admin group info site1 site-replication-issue-group --json | jq .groupStatus | tr -d '"') + +if [[ $status == "enabled" ]]; then + echo "Success" +else + echo "Expected status: enabled, actual status: $status" + exit 1 +fi + cleanup ## change working directory diff --git a/cmd/site-replication.go b/cmd/site-replication.go index 814898075..2186c78b8 100644 --- a/cmd/site-replication.go +++ b/cmd/site-replication.go @@ -1325,7 +1325,7 @@ func (c *SiteReplicationSys) PeerGroupInfoChangeHandler(ctx context.Context, cha } else { _, err = globalIAMSys.AddUsersToGroup(ctx, updReq.Group, updReq.Members) } - if err == nil && updReq.Status != madmin.GroupEnabled { + if err == nil && updReq.Status != "" { _, err = globalIAMSys.SetGroupStatus(ctx, updReq.Group, updReq.Status == madmin.GroupEnabled) } }