mirror of https://github.com/minio/minio.git
Fixed transition rules getting overwritten while healing (#18542)
While healing the latest changes of expiry rules across sites if target had pre existing transition rules, they were getting overwritten as cloned latest expiry rules from remote site were getting written as is. Fixed the same and added test cases as well. Signed-off-by: Shubhendu Ram Tripathi <shubhendu@minio.io>
This commit is contained in:
parent
dc88865908
commit
ce62980d4e
|
@ -6095,8 +6095,11 @@ func mergeWithCurrentLCConfig(ctx context.Context, bucket string, expLCCfg *stri
|
|||
// else simply add to the map. This may happen if ILM expiry replication
|
||||
// was disabled for sometime and rules were updated independently in different
|
||||
// sites. Latest changes would get applied but merge only the non transition details
|
||||
if _, ok := rMap[id]; ok {
|
||||
rMap[id] = rl.CloneNonTransition()
|
||||
if existingRl, ok := rMap[id]; ok {
|
||||
clonedRl := rl.CloneNonTransition()
|
||||
clonedRl.Transition = existingRl.Transition
|
||||
clonedRl.NoncurrentVersionTransition = existingRl.NoncurrentVersionTransition
|
||||
rMap[id] = clonedRl
|
||||
} else {
|
||||
rMap[id] = rl
|
||||
}
|
||||
|
|
|
@ -109,6 +109,25 @@ if [ $count -ne 1 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
## Check replication of rules content
|
||||
expDays=$(./mc ilm rule list siteb/bucket --json | jq '.config.Rules[0].Expiration.Days')
|
||||
noncurrentDays=$(./mc ilm rule list siteb/bucket --json | jq '.config.Rules[0].NoncurrentVersionExpiration.NoncurrentDays')
|
||||
if [ $expDays -ne 3 ]; then
|
||||
echo "BUG: Incorrect expiry days '${expDays}' set for 'siteb'"
|
||||
exit 1
|
||||
fi
|
||||
if [ $noncurrentDays -ne 2 ]; then
|
||||
echo "BUG: Incorrect non current expiry days '${noncurrentDays}' set for siteb"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## Make sure transition rule not replicated to siteb
|
||||
tranDays=$(./mc ilm rule list siteb/bucket --json | jq '.config.Rules[0].Transition.Days')
|
||||
if [ "${tranDays}" != "null" ]; then
|
||||
echo "BUG: Transition rules as well copied to siteb"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## Check replication of rules prefix and tags
|
||||
prefix=$(./mc ilm rule list siteb/bucket --json | jq '.config.Rules[0].Filter.And.Prefix' | sed 's/"//g')
|
||||
tagName1=$(./mc ilm rule list siteb/bucket --json | jq '.config.Rules[0].Filter.And.Tags[0].Key' | sed 's/"//g')
|
||||
|
@ -183,6 +202,13 @@ if [ $count2 -ne 888 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
## Check to make sure sitea transition rule is not overwritten
|
||||
transDays=$(./mc ilm rule list sitea/bucket --json | jq '.config.Rules[0].Transition.Days')
|
||||
if [ $transDays -ne 0 ] || [ "${transDays}" == "null" ]; then
|
||||
echo "BUG: Transition rule on sitea seems to be overwritten"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
## Check replication of edit of prefix, tags and status of ILM Expiry Rules
|
||||
./mc ilm rule edit --id "${id}" --prefix "newprefix" --tags "ntag1=nval1&ntag2=nval2" --disable sitea/bucket
|
||||
sleep 30
|
||||
|
|
Loading…
Reference in New Issue