Skip to content

Commit 86aba97

Browse files
authored
Merge pull request ceph#62637 from smanjara/wip-rgw-revert-62323
rgw/multisite: revert pr 62323 Reviewed-by: Casey Bodley <[email protected]>
2 parents 1e1b11b + 7b96502 commit 86aba97

File tree

3 files changed

+0
-321
lines changed

3 files changed

+0
-321
lines changed

src/rgw/driver/rados/rgw_data_sync.cc

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4520,20 +4520,6 @@ class RGWBucketSyncSingleEntryCR : public RGWCoroutine {
45204520
tn->log(0, "entry with empty obj name, skipping");
45214521
goto done;
45224522
}
4523-
4524-
// make sure versioned object only lands on versioned bucket and non-versioned object only lands on non-versioned bucket
4525-
if (key.instance.empty() == sync_pipe.dest_bucket_info.versioned()) {
4526-
set_status("skipping entry due to versioning mismatch");
4527-
tn->log(0, SSTR("skipping entry due to versioning mismatch: " << key));
4528-
goto done;
4529-
}
4530-
// if object lock is enabled on either, the other should follow as well
4531-
if (sync_pipe.source_bucket_info.obj_lock_enabled() != sync_pipe.dest_bucket_info.obj_lock_enabled()) {
4532-
set_status("skipping entry due to object lock mismatch");
4533-
tn->log(0, SSTR("skipping entry due to object lock mismatch: " << key));
4534-
goto done;
4535-
}
4536-
45374523
if (error_injection &&
45384524
rand() % 10000 < cct->_conf->rgw_sync_data_inject_err_probability * 10000.0) {
45394525
tn->log(0, SSTR(": injecting data sync error on key=" << key.name));

src/rgw/rgw_rest_s3.cc

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,28 +1356,6 @@ struct ReplicationConfiguration {
13561356
}
13571357
pipe->dest.bucket.emplace(dest_bk);
13581358

1359-
std::unique_ptr<rgw::sal::Bucket> dest_bucket;
1360-
if (int r = driver->load_bucket(s, *pipe->dest.bucket, &dest_bucket, s->yield); r < 0) {
1361-
if (r == -ENOENT) {
1362-
s->err.message = "Destination bucket must exist.";
1363-
return -EINVAL;
1364-
}
1365-
1366-
ldpp_dout(s, 0) << "ERROR: failed to load bucket info for bucket=" << *pipe->dest.bucket << " r=" << r << dendl;
1367-
return r;
1368-
}
1369-
1370-
// check versioning identicality
1371-
if (dest_bucket->get_info().versioned() != s->bucket->get_info().versioned()) {
1372-
s->err.message = "Versioning must be identical in source and destination buckets.";
1373-
return -EINVAL;
1374-
}
1375-
// check object lock identicality
1376-
if (dest_bucket->get_info().obj_lock_enabled() != s->bucket->get_info().obj_lock_enabled()) {
1377-
s->err.message = "Object lock must be identical in source and destination buckets.";
1378-
return -EINVAL;
1379-
}
1380-
13811359
if (filter) {
13821360
int r = filter->to_sync_pipe_filter(s->cct, &pipe->params.source.filter);
13831361
if (r < 0) {

src/test/rgw/rgw_multi/tests.py

Lines changed: 0 additions & 285 deletions
Original file line numberDiff line numberDiff line change
@@ -3916,288 +3916,3 @@ def test_bucket_replication_alt_user():
39163916
# check that object exists in destination bucket
39173917
k = get_key(dest, dest_bucket, objname)
39183918
assert_equal(k.get_contents_as_string().decode('utf-8'), 'foo')
3919-
3920-
@allow_bucket_replication
3921-
def test_bucket_replication_reject_versioning_identical():
3922-
zonegroup = realm.master_zonegroup()
3923-
zonegroup_conns = ZonegroupConns(zonegroup)
3924-
3925-
source = zonegroup_conns.non_account_rw_zones[0]
3926-
dest = zonegroup_conns.non_account_rw_zones[1]
3927-
3928-
source_bucket = source.create_bucket(gen_bucket_name())
3929-
dest_bucket = dest.create_bucket(gen_bucket_name())
3930-
source.s3_client.put_bucket_versioning(
3931-
Bucket=source_bucket.name,
3932-
VersioningConfiguration={'Status': 'Enabled'}
3933-
)
3934-
zonegroup_meta_checkpoint(zonegroup)
3935-
3936-
# create replication configuration
3937-
e = assert_raises(ClientError,
3938-
source.s3_client.put_bucket_replication,
3939-
Bucket=source_bucket.name,
3940-
ReplicationConfiguration={
3941-
'Role': '',
3942-
'Rules': [{
3943-
'ID': 'rule1',
3944-
'Status': 'Enabled',
3945-
'Destination': {
3946-
'Bucket': f'arn:aws:s3:::{dest_bucket.name}',
3947-
}
3948-
}]
3949-
})
3950-
assert e.response['ResponseMetadata']['HTTPStatusCode'] == 400
3951-
3952-
@allow_bucket_replication
3953-
def test_bucket_replicaion_reject_objectlock_identical():
3954-
zonegroup = realm.master_zonegroup()
3955-
zonegroup_conns = ZonegroupConns(zonegroup)
3956-
3957-
source = zonegroup_conns.non_account_rw_zones[0]
3958-
dest = zonegroup_conns.non_account_rw_zones[1]
3959-
3960-
source_bucket = source.create_bucket(gen_bucket_name())
3961-
dest_bucket_name = gen_bucket_name()
3962-
dest.s3_client.create_bucket(Bucket=dest_bucket_name, ObjectLockEnabledForBucket=True)
3963-
zonegroup_meta_checkpoint(zonegroup)
3964-
3965-
# create replication configuration
3966-
e = assert_raises(ClientError,
3967-
source.s3_client.put_bucket_replication,
3968-
Bucket=source_bucket.name,
3969-
ReplicationConfiguration={
3970-
'Role': '',
3971-
'Rules': [{
3972-
'ID': 'rule1',
3973-
'Status': 'Enabled',
3974-
'Destination': {
3975-
'Bucket': f'arn:aws:s3:::{dest_bucket_name}',
3976-
}
3977-
}]
3978-
})
3979-
assert e.response['ResponseMetadata']['HTTPStatusCode'] == 400
3980-
3981-
@allow_bucket_replication
3982-
def test_bucket_replication_non_versioned_to_versioned():
3983-
zonegroup = realm.master_zonegroup()
3984-
zonegroup_conns = ZonegroupConns(zonegroup)
3985-
3986-
source = zonegroup_conns.non_account_rw_zones[0]
3987-
dest = zonegroup_conns.non_account_rw_zones[1]
3988-
3989-
source_bucket = source.create_bucket(gen_bucket_name())
3990-
dest_bucket = dest.create_bucket(gen_bucket_name())
3991-
zonegroup_meta_checkpoint(zonegroup)
3992-
3993-
# create replication configuration
3994-
response = source.s3_client.put_bucket_replication(
3995-
Bucket=source_bucket.name,
3996-
ReplicationConfiguration={
3997-
'Role': '',
3998-
'Rules': [
3999-
{
4000-
'ID': 'rule1',
4001-
'Status': 'Enabled',
4002-
'Destination': {
4003-
'Bucket': f'arn:aws:s3:::{dest_bucket.name}',
4004-
}
4005-
}
4006-
]
4007-
}
4008-
)
4009-
assert response['ResponseMetadata']['HTTPStatusCode'] == 200
4010-
zonegroup_meta_checkpoint(zonegroup)
4011-
4012-
# enable versioning on destination bucket
4013-
dest.s3_client.put_bucket_versioning(
4014-
Bucket=dest_bucket.name,
4015-
VersioningConfiguration={'Status': 'Enabled'}
4016-
)
4017-
zonegroup_meta_checkpoint(zonegroup)
4018-
4019-
# upload an object and wait for sync.
4020-
objname = 'dummy'
4021-
k = new_key(source, source_bucket, objname)
4022-
k.set_contents_from_string('foo')
4023-
zone_data_checkpoint(dest.zone, source.zone)
4024-
4025-
# check that object not exists in destination bucket
4026-
e = assert_raises(ClientError, dest.s3_client.get_object, Bucket=dest_bucket.name, Key=objname)
4027-
assert e.response['Error']['Code'] == 'NoSuchKey'
4028-
4029-
@allow_bucket_replication
4030-
def test_bucket_replication_versioned_to_non_versioned():
4031-
zonegroup = realm.master_zonegroup()
4032-
zonegroup_conns = ZonegroupConns(zonegroup)
4033-
4034-
source = zonegroup_conns.non_account_rw_zones[0]
4035-
dest = zonegroup_conns.non_account_rw_zones[1]
4036-
4037-
source_bucket = source.create_bucket(gen_bucket_name())
4038-
dest_bucket = dest.create_bucket(gen_bucket_name())
4039-
zonegroup_meta_checkpoint(zonegroup)
4040-
4041-
# create replication configuration
4042-
response = source.s3_client.put_bucket_replication(
4043-
Bucket=source_bucket.name,
4044-
ReplicationConfiguration={
4045-
'Role': '',
4046-
'Rules': [
4047-
{
4048-
'ID': 'rule1',
4049-
'Status': 'Enabled',
4050-
'Destination': {
4051-
'Bucket': f'arn:aws:s3:::{dest_bucket.name}',
4052-
}
4053-
}
4054-
]
4055-
}
4056-
)
4057-
assert response['ResponseMetadata']['HTTPStatusCode'] == 200
4058-
zonegroup_meta_checkpoint(zonegroup)
4059-
4060-
# enable versioning on source bucket
4061-
source.s3_client.put_bucket_versioning(
4062-
Bucket=source_bucket.name,
4063-
VersioningConfiguration={'Status': 'Enabled'}
4064-
)
4065-
zonegroup_meta_checkpoint(zonegroup)
4066-
4067-
# upload an object and wait for sync.
4068-
objname = 'dummy'
4069-
k = new_key(source, source_bucket, objname)
4070-
k.set_contents_from_string('foo')
4071-
zone_data_checkpoint(dest.zone, source.zone)
4072-
4073-
# check that object not exists in destination bucket
4074-
e = assert_raises(ClientError, dest.s3_client.get_object, Bucket=dest_bucket.name, Key=objname)
4075-
assert e.response['Error']['Code'] == 'NoSuchKey'
4076-
4077-
@allow_bucket_replication
4078-
def test_bucket_replication_lock_enabled_to_lock_disabled():
4079-
zonegroup = realm.master_zonegroup()
4080-
zonegroup_conns = ZonegroupConns(zonegroup)
4081-
4082-
source = zonegroup_conns.non_account_rw_zones[0]
4083-
dest = zonegroup_conns.non_account_rw_zones[1]
4084-
4085-
source_bucket_name = gen_bucket_name()
4086-
source.create_bucket(source_bucket_name)
4087-
# enabled versioning
4088-
source.s3_client.put_bucket_versioning(
4089-
Bucket=source_bucket_name,
4090-
VersioningConfiguration={'Status': 'Enabled'}
4091-
)
4092-
dest_bucket = dest.create_bucket(gen_bucket_name())
4093-
# enabled versioning
4094-
dest.s3_client.put_bucket_versioning(
4095-
Bucket=dest_bucket.name,
4096-
VersioningConfiguration={'Status': 'Enabled'}
4097-
)
4098-
zonegroup_meta_checkpoint(zonegroup)
4099-
4100-
# create replication configuration
4101-
source.s3_client.put_bucket_replication(
4102-
Bucket=source_bucket_name,
4103-
ReplicationConfiguration={
4104-
'Role': '',
4105-
'Rules': [{
4106-
'ID': 'rule1',
4107-
'Status': 'Enabled',
4108-
'Destination': {
4109-
'Bucket': f'arn:aws:s3:::{dest_bucket.name}',
4110-
}
4111-
}]
4112-
}
4113-
)
4114-
zonegroup_meta_checkpoint(zonegroup)
4115-
4116-
# enable object lock on source bucket
4117-
source.s3_client.put_object_lock_configuration(
4118-
Bucket=source_bucket_name,
4119-
ObjectLockConfiguration={
4120-
'ObjectLockEnabled': 'Enabled',
4121-
'Rule': {
4122-
'DefaultRetention': {
4123-
'Mode': 'GOVERNANCE',
4124-
'Days': 1
4125-
}
4126-
}
4127-
}
4128-
)
4129-
zonegroup_meta_checkpoint(zonegroup)
4130-
4131-
# upload an object and wait for sync.
4132-
objname = 'dummy'
4133-
k = new_key(source, source_bucket_name, objname)
4134-
k.set_contents_from_string('foo')
4135-
zone_data_checkpoint(dest.zone, source.zone)
4136-
4137-
# check that object does not exist in destination bucket
4138-
e = assert_raises(ClientError, dest.s3_client.get_object, Bucket=dest_bucket.name, Key=objname)
4139-
assert e.response['Error']['Code'] == 'NoSuchKey'
4140-
4141-
@allow_bucket_replication
4142-
def test_bucket_replication_lock_disabled_to_lock_enabled():
4143-
zonegroup = realm.master_zonegroup()
4144-
zonegroup_conns = ZonegroupConns(zonegroup)
4145-
4146-
source = zonegroup_conns.non_account_rw_zones[0]
4147-
dest = zonegroup_conns.non_account_rw_zones[1]
4148-
4149-
source_bucket = source.create_bucket(gen_bucket_name())
4150-
# enabled versioning
4151-
source.s3_client.put_bucket_versioning(
4152-
Bucket=source_bucket.name,
4153-
VersioningConfiguration={'Status': 'Enabled'}
4154-
)
4155-
dest_bucket_name = gen_bucket_name()
4156-
dest.create_bucket(dest_bucket_name)
4157-
# enabled versioning
4158-
dest.s3_client.put_bucket_versioning(
4159-
Bucket=dest_bucket_name,
4160-
VersioningConfiguration={'Status': 'Enabled'}
4161-
)
4162-
zonegroup_meta_checkpoint(zonegroup)
4163-
4164-
# create replication configuration
4165-
source.s3_client.put_bucket_replication(
4166-
Bucket=source_bucket.name,
4167-
ReplicationConfiguration={
4168-
'Role': '',
4169-
'Rules': [{
4170-
'ID': 'rule1',
4171-
'Status': 'Enabled',
4172-
'Destination': {
4173-
'Bucket': f'arn:aws:s3:::{dest_bucket_name}',
4174-
}
4175-
}]
4176-
}
4177-
)
4178-
zonegroup_meta_checkpoint(zonegroup)
4179-
4180-
# enable object lock on destination bucket
4181-
dest.s3_client.put_object_lock_configuration(
4182-
Bucket=dest_bucket_name,
4183-
ObjectLockConfiguration={
4184-
'ObjectLockEnabled': 'Enabled',
4185-
'Rule': {
4186-
'DefaultRetention': {
4187-
'Mode': 'GOVERNANCE',
4188-
'Days': 1
4189-
}
4190-
}
4191-
}
4192-
)
4193-
zonegroup_meta_checkpoint(zonegroup)
4194-
4195-
# upload an object and wait for sync.
4196-
objname = 'dummy'
4197-
k = new_key(source, source_bucket.name, objname)
4198-
k.set_contents_from_string('foo')
4199-
zone_data_checkpoint(dest.zone, source.zone)
4200-
4201-
# check that object does not exist in destination bucket
4202-
e = assert_raises(ClientError, dest.s3_client.get_object, Bucket=dest_bucket_name, Key=objname)
4203-
assert e.response['Error']['Code'] == 'NoSuchKey'

0 commit comments

Comments
 (0)