Disallow deletion of ARN when under active replication (#14972)

fixes a regression from #12880
This commit is contained in:
Poorna 2022-05-24 19:40:45 -07:00 committed by GitHub
parent 41cdb357bb
commit d8101573be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 4 deletions

View File

@ -201,7 +201,7 @@ func (sys *BucketTargetSys) RemoveTarget(ctx context.Context, bucket, arnStr str
// reject removal of remote target if replication configuration is present
rcfg, err := getReplicationConfig(ctx, bucket)
if err == nil {
for _, tgtArn := range rcfg.FilterTargetArns(replication.ObjectOpts{}) {
for _, tgtArn := range rcfg.FilterTargetArns(replication.ObjectOpts{OpType: replication.AllReplicationType}) {
if err == nil && (tgtArn == arnStr || rcfg.RoleArn == arnStr) {
sys.RLock()
_, ok := sys.arnRemotesMap[arnStr]

View File

@ -124,6 +124,7 @@ const (
HealReplicationType
ExistingObjectReplicationType
ResyncReplicationType
AllReplicationType
)
// Valid returns true if replication type is set
@ -148,7 +149,7 @@ type ObjectOpts struct {
// FilterActionableRules returns the rules actions that need to be executed
// after evaluating prefix/tag filtering
func (c Config) FilterActionableRules(obj ObjectOpts) []Rule {
if obj.Name == "" && obj.OpType != ResyncReplicationType {
if obj.Name == "" && !(obj.OpType == ResyncReplicationType || obj.OpType == AllReplicationType) {
return nil
}
var rules []Rule
@ -160,8 +161,8 @@ func (c Config) FilterActionableRules(obj ObjectOpts) []Rule {
if obj.TargetArn != "" && rule.Destination.ARN != obj.TargetArn && c.RoleArn != obj.TargetArn {
continue
}
// Ignore other object level and prefix filters for resyncing target
if obj.OpType == ResyncReplicationType {
// Ignore other object level and prefix filters for resyncing target/listing bucket targets
if obj.OpType == ResyncReplicationType || obj.OpType == AllReplicationType {
rules = append(rules, rule)
continue
}