Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rgw: multisite commands are used idempotently in error #8879

Closed
BlaineEXE opened this issue Sep 29, 2021 · 18 comments · Fixed by #8911
Closed

rgw: multisite commands are used idempotently in error #8879

BlaineEXE opened this issue Sep 29, 2021 · 18 comments · Fixed by #8911
Projects

Comments

@BlaineEXE
Copy link
Member

Is this a bug report or feature request?

  • Bug Report

Commands for setting up RGW multi-site in Rook treat commands as idempotent, but that is not the case. RGW commands to create/update realm/zonegroup/zone/period cause a new "epoch," and all RGWs that use the config have to pause for a short time to update to use the new config. Rook should only update configs if they have actually changed. There is a --staging flag that may be useful in allowing Rook to see if there will be any changes made without rook having to deeply inspect the configurations.

See this conversation: #8828 (comment)
And this comment: #8828 (comment)

@BlaineEXE BlaineEXE added this to To do in v1.8 via automation Sep 29, 2021
@BlaineEXE
Copy link
Member Author

BlaineEXE commented Oct 1, 2021

I've done some investigation of using period update --staging per @cbodley 's suggestion, and I have some questions.

First my findings from comparing period get versus period update --staging:

Period get
radosgw-admin --rgw-realm=my-store --rgw-zonegroup=my-store --rgw-zone=my-store --cluster=rook-ceph --conf=/var/lib/rook/rook-ceph/rook-ceph.config --name=client.admin --keyring=/var/lib/rook/rook-ceph/client.admin.keyring period get

{
    "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
    "epoch": 1,
    "predecessor_uuid": "f02fbd92-8722-4a9c-9247-92fa62467b54",
    "sync_status": [],
    "period_map": {
        "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
        "zonegroups": [
            {
                "id": "663564f3-4050-4dbd-9e0a-e6ab87af03bd",
                "name": "my-store",
                "api_name": "my-store",
                "is_master": "true",
                "endpoints": [
                    "http://10.103.203.154:80"
                ],
                "hostnames": [],
                "hostnames_s3website": [],
                "master_zone": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                "zones": [
                    {
                        "id": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                        "name": "my-store",
                        "endpoints": [
                            "http://10.103.203.154:80"
                        ],
                        "log_meta": "false",
                        "log_data": "false",
                        "bucket_index_max_shards": 11,
                        "read_only": "false",
                        "tier_type": "",
                        "sync_from_all": "true",
                        "sync_from": [],
                        "redirect_zone": ""
                    }
                ],
                "placement_targets": [
                    {
                        "name": "default-placement",
                        "tags": [],
                        "storage_classes": [
                            "STANDARD"
                        ]
                    }
                ],
                "default_placement": "default-placement",
                "realm_id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221",
                "sync_policy": {
                    "groups": []
                }
            }
        ],
        "short_zone_ids": [
            {
                "key": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                "val": 2231118265
            }
        ]
    },
    "master_zonegroup": "663564f3-4050-4dbd-9e0a-e6ab87af03bd",
    "master_zone": "452600ee-8c8a-4cc0-a841-7960030fe88c",
    "period_config": {
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        }
    },
    "realm_id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221",
    "realm_name": "my-store",
    "realm_epoch": 2
}

Period update --staging
radosgw-admin --rgw-realm=my-store --rgw-zonegroup=my-store --rgw-zone=my-store --cluster=rook-ceph --conf=/var/lib/rook/rook-ceph/rook-ceph.config --name=client.admin --keyring=/var/lib/rook/rook-ceph/client.admin.keyring period update --staging

{
    "id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221:staging",
    "epoch": 1,
    "predecessor_uuid": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
    "sync_status": [],
    "period_map": {
        "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
        "zonegroups": [
            {
                "id": "663564f3-4050-4dbd-9e0a-e6ab87af03bd",
                "name": "my-store",
                "api_name": "my-store",
                "is_master": "true",
                "endpoints": [
                    "http://10.103.203.154:80"
                ],
                "hostnames": [],
                "hostnames_s3website": [],
                "master_zone": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                "zones": [
                    {
                        "id": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                        "name": "my-store",
                        "endpoints": [
                            "http://10.103.203.154:80"
                        ],
                        "log_meta": "false",
                        "log_data": "false",
                        "bucket_index_max_shards": 11,
                        "read_only": "false",
                        "tier_type": "",
                        "sync_from_all": "true",
                        "sync_from": [],
                        "redirect_zone": ""
                    }
                ],
                "placement_targets": [
                    {
                        "name": "default-placement",
                        "tags": [],
                        "storage_classes": [
                            "STANDARD"
                        ]
                    }
                ],
                "default_placement": "default-placement",
                "realm_id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221",
                "sync_policy": {
                    "groups": []
                }
            }
        ],
        "short_zone_ids": [
            {
                "key": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                "val": 2231118265
            }
        ]
    },
    "master_zonegroup": "663564f3-4050-4dbd-9e0a-e6ab87af03bd",
    "master_zone": "452600ee-8c8a-4cc0-a841-7960030fe88c",
    "period_config": {
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        }
    },
    "realm_id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221",
    "realm_name": "my-store",
    "realm_epoch": 3
}

Diff for ease of comparison
`diff period-get.json period-update-staging.json ```

2c2
<     "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
---
>     "id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221:staging",
4c4
<     "predecessor_uuid": "f02fbd92-8722-4a9c-9247-92fa62467b54",
---
>     "predecessor_uuid": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
80c80
<     "realm_epoch": 2
---
>     "realm_epoch": 3

From my findings, I see that updating the period would do 3 things:

  1. Update the period's id (UUID) to a new value (suffixed with :staging)
  2. Update the predecessor_uuid to the id found in period get
  3. Update the realm_epoch

Questions
1 and 2 above make sense. We could presumably ignore these changes when seeing if there would be updates.
In period update --staging, why does realm_epoch change instead of the period's own epoch?

@BlaineEXE
Copy link
Member Author

BlaineEXE commented Oct 1, 2021

Following up from above I compared period update --staging with the actual results of doing period update --commit; period get.

Period get after updating

  • radosgw-admin --rgw-realm=my-store --rgw-zonegroup=my-store --rgw-zone=my-store --cluster=rook-ceph --conf=/var/lib/rook/rook-ceph/rook-ceph.config --name=client.admin --keyring=/var/lib/rook/rook-ceph/client.admin.keyring period update --commit
  • radosgw-admin --rgw-realm=my-store --rgw-zonegroup=my-store --rgw-zone=my-store --cluster=rook-ceph --conf=/var/lib/rook/rook-ceph/rook-ceph.config --name=client.admin --keyring=/var/lib/rook/rook-ceph/client.admin.keyring period get
{
    "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
    "epoch": 2,
    "predecessor_uuid": "f02fbd92-8722-4a9c-9247-92fa62467b54",
    "sync_status": [],
    "period_map": {
        "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
        "zonegroups": [
            {
                "id": "663564f3-4050-4dbd-9e0a-e6ab87af03bd",
                "name": "my-store",
                "api_name": "my-store",
                "is_master": "true",
                "endpoints": [
                    "http://10.103.203.154:80"
                ],
                "hostnames": [],
                "hostnames_s3website": [],
                "master_zone": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                "zones": [
                    {
                        "id": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                        "name": "my-store",
                        "endpoints": [
                            "http://10.103.203.154:80"
                        ],
                        "log_meta": "false",
                        "log_data": "false",
                        "bucket_index_max_shards": 11,
                        "read_only": "false",
                        "tier_type": "",
                        "sync_from_all": "true",
                        "sync_from": [],
                        "redirect_zone": ""
                    }
                ],
                "placement_targets": [
                    {
                        "name": "default-placement",
                        "tags": [],
                        "storage_classes": [
                            "STANDARD"
                        ]
                    }
                ],
                "default_placement": "default-placement",
                "realm_id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221",
                "sync_policy": {
                    "groups": []
                }
            }
        ],
        "short_zone_ids": [
            {
                "key": "452600ee-8c8a-4cc0-a841-7960030fe88c",
                "val": 2231118265
            }
        ]
    },
    "master_zonegroup": "663564f3-4050-4dbd-9e0a-e6ab87af03bd",
    "master_zone": "452600ee-8c8a-4cc0-a841-7960030fe88c",
    "period_config": {
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        }
    },
    "realm_id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221",
    "realm_name": "my-store",
    "realm_epoch": 2
}

Diff for ease of comparison

2,4c2,4
<     "id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221:staging",
<     "epoch": 1,
<     "predecessor_uuid": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
---
>     "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
>     "epoch": 2,
>     "predecessor_uuid": "f02fbd92-8722-4a9c-9247-92fa62467b54",
80c80
<     "realm_epoch": 3
---
>     "realm_epoch": 2

Findings:

  1. The period update --staging suggests that the realm_epoch will change from 2-->3, but that doesn't happen.
  2. The period's epoch does change from 1-->2, which is not predicted by period update --staging
  3. period update --staging predicts UUIDs will change, but that doesn't actually happen. They stay the same.

In summary...

  1. doing period update --commit when there are no changes does result in the epoch being incremented
    • this means that we shouldn't update the period if there have been no changes
  2. period update --staging does not accurately predict the changes that will occur from period update --commit

@BlaineEXE
Copy link
Member Author

Further question:

It seems that --staging only works for the period update command. Is there a --dry-run type command associated with realm/zonegroup/zone modify?

@cbodley
Copy link

cbodley commented Oct 1, 2021

the --staging flag is only understood by the period get command. if period update is dumping the period output, it's probably the same thing you'd see from period get --staging

@cbodley
Copy link

cbodley commented Oct 1, 2021

the behavior of epoch and realm_epoch will depend on whether the 'metadata master' zone (the master zone of the master zonegroup) is changing. if it's changing, period commit will increment realm_epoch and generate a new period id with a fresh epoch. if the metadata master zone stays the same, we keep the same realm_epoch and period id, and just increment the period's epoch

@cbodley
Copy link

cbodley commented Oct 1, 2021

2,4c2,4
<     "id": "3ba59d2b-c1b0-4844-88bd-65309fa1a221:staging",
<     "epoch": 1,
<     "predecessor_uuid": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
---
>     "id": "07e8d4f8-e7e7-4845-a0b7-22d91d5271ca",
>     "epoch": 2,
>     "predecessor_uuid": "f02fbd92-8722-4a9c-9247-92fa62467b54",
80c80
<     "realm_epoch": 3
---
>     "realm_epoch": 2

you can ignore those variables in the diff, because they can't be changed manually with any of the zone/zonegroup modify commands

@BlaineEXE
Copy link
Member Author

the --staging flag is only understood by the period get command. if period update is dumping the period output, it's probably the same thing you'd see from period get --staging

Yes. You're correct. period update --staging outputs the same as period get --staging. That was my misunderstanding at first.

From my perspective, it seems that we might not be able to accurately predict whether there have been no changes before issuing a period update --commit. The epoch reported by period get --staging is always 1, the realm_epoch always increments, and the UUID references always change.

I will investigate what actually changes in period get --staging when I make changes to realm/zonegroup/zone to see if we still might be able to use this.

I am still wondering if there is a --staging or --dry-run type command for running {realm,zonegroup,zone} modify commands.

@BlaineEXE
Copy link
Member Author

New findings for zonegroups:

  1. I used the zonegroup modify using the same zonegroup create command (i.e., nothing changed other than create-->modify), and I found that the zonegroup get outputs didn't change.
    • zonegroups don't seem to have epochs; does this mean it's safe to always use the zonegroup modify command even when there are no changes?
  2. I used zonegroup modify to add an additional endpoint, and period get --staging showed no endpoint changes.
  3. When I use period update --staging, it does show the endpoint changes (in addition to the things that always change).
    • Can I assume period update --staging is safe to use?

@cbodley
Copy link

cbodley commented Oct 1, 2021

I am still wondering if there is a --staging or --dry-run type command for running {realm,zonegroup,zone} modify commands.

i'm not sure exactly what you're looking for here. technically it does 'stage' the changes by writing them to zonegroup metadata objects in rados. the period update command reads these zonegroup objects and writes a snapshot of them to the 'staging' period, then period commit commits that snapshot of the period as the realm's new current period, and all zones in the realm switch to that configuration

@cbodley
Copy link

cbodley commented Oct 1, 2021

period update doesn't look at --staging, only period get does. period update always writes to that staging period

@BlaineEXE
Copy link
Member Author

BlaineEXE commented Oct 1, 2021

I see. To clarify my updated understanding... (I wasn't quite sure what "staging" was conceptually to RGWs before your comment here #8879 (comment))

  • period update updates the period (in staging), but it does not commit the new period to the RGW configs. Only period update --commit does so.
  • In order to see changes from period get --staging, we must do a period update first (without --commit).
  • If period update is issued without --commit, then there is no risk of RGWs restarting to collect the updated period config.

@cbodley
Copy link

cbodley commented Oct 1, 2021

I see. To clarify my updated understanding...

* `period update` updates the period (in staging), but it does not commit the new period to the RGW configs. Only `period update --commit` does so.

period commit commits the staging period, period update --commit does both the update and the commit

* In order to see changes from `period get --staging`, we must do a `period update` first (without `--commit`).

right. though since period update dumps the same thing as period get --staging, you probably just want to compare the output of period update with period get to see what changed

* If `period update` is issued **without** `--commit`, then there is no risk of RGWs restarting to collect the updated period config.

that's right 👍

@BlaineEXE
Copy link
Member Author

BlaineEXE commented Oct 1, 2021

Okay. From a practical standpoint for Rook, I want to make sure the following workflow will achieve the idempotent workflow we want that...

  1. will update RGW configs when there are config changes BUT
  2. will not result in unnecessary side-effects when there are no config changes

Note: I think we can ignore realms in this discussion. I can't find any record of Rook updating a realm once it is created, and it seems that there isn't even a realm update or realm modify command available (only realm rename which Rook doesn't use). Presumably, if Rook were to update a realm in the future, it would also require zonegroup and zone changes, so we can focus only on zonegroup and zone updates for discussion of idempotency purposes.

Workflow:

  1. get the zonegroup
    1. create the zonegroup if it doesn't exist
    2. modify the zonegroup if it does exist (with or without config changes)
  2. get the zone
    1. create the zone if it doesn't exist
    2. modify the zone if it does exist (with or without config changes)
  3. get the period
    1. create the period by issuing period update --commit if the period doesn't exist
    2. OR, if the period does exist...
      1. use period update to stage the current updates
      2. use period get to see the current config
      3. Compare the output from above to determine if there are any staged changes (we will have to ignore changes to epoch, both UUIDs, and to realm_epoch)
      4. If there are no changes, we are done (return)
      5. If there are changes, we must issue period update --commit

@cbodley
Copy link

cbodley commented Oct 1, 2021

overall sounds great! i don't think you'll need a special case for nonexistent periods in 3.i. the first period is created during realm create. and in the cases where the realm was created remotely, the realm pull command also pulls the current period and stores it locally

@BlaineEXE
Copy link
Member Author

BlaineEXE commented Oct 1, 2021

Interesting. This may be another bug in Rook then...

Currently, the realm creation also follows the patter of get realm and create realm if it doesn't exist. However, Rook does not issue realm pull afterwards, and it's been my experience that period get fails [on the first creation] as suggested by this workflow.

It seems that after Rook creates a realm, it should issue realm pull to get the first epoch of the period. Is that correct?

@cbodley
Copy link

cbodley commented Oct 1, 2021

it's been my experience that period get fails [on the first creation]

huh, i'm not sure why. is that with the --rgw-realm specified?

It seems that after Rook creates a realm, it should issue realm pull to get the first epoch of the period. Is that correct?

no, realm pull is used to attach a new ceph cluster to a realm that was created on another cluster. does rook support multiple ceph clusters, or allow its object stores to attach to a multisite cluster hosted outside of rook? it would need realm pull to do these things. cc @alimaredia

if rook doesn't support that stuff, and all of its object stores are on the same ceph cluster, then they all share the rados pool that stores these realm/period/zonegroup/zone objects. so if realm create was run on that cluster, then all of the object stores would have access to the realm and its period without needing realm pull

@BlaineEXE
Copy link
Member Author

BlaineEXE commented Oct 1, 2021

huh, i'm not sure why. is that with the --rgw-realm specified?

It is. The command looks like this radosgw-admin period get --rgw-realm=my-store --rgw-zonegroup=my-store --rgw-zone=my-store --cluster=rook-ceph --conf=/var/lib/rook/rook-ceph/rook-ceph.config --name=client.admin --keyring=/var/lib/rook/rook-ceph/client.admin.keyring and returns ENOENT.

Actually, I am wrong here. :(
period get does return results. I must have made some mistake in my prior testing.

BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 4, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 4, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 5, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 6, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 6, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 6, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
@thotz
Copy link
Contributor

thotz commented Oct 6, 2021

Okay. From a practical standpoint for Rook, I want to make sure the following workflow will achieve the idempotent workflow we want that...

1. will update RGW configs when there are config changes BUT

2. will **not** result in unnecessary side-effects when there are **no** config changes

Note: I think we can ignore realms in this discussion. I can't find any record of Rook updating a realm once it is created, and it seems that there isn't even a realm update or realm modify command available (only realm rename which Rook doesn't use). Presumably, if Rook were to update a realm in the future, it would also require zonegroup and zone changes, so we can focus only on zonegroup and zone updates for discussion of idempotency purposes.

Workflow:

1. `get` the zonegroup
   
   1. `create` the zonegroup if it doesn't exist
   2. `modify` the zonegroup if it does exist (with or without config changes)

2. `get` the zone
   
   1. `create` the zone if it doesn't exist
   2. `modify` the zone if it does exist (with or without config changes)

Sorry I don't really understand why zonegroup/zone modified for already existing zonegroup/zone. Does it creates unnecessary period updates while reconciling cephobjectstore CRD or restarting the rook-operator pod.

3. `get` the period
   
   1. create the period by issuing `period update --commit` if the period doesn't exist
   2. OR, if the period **does** exist...
      
      1. use `period update` to stage the current updates
      2. use `period get` to see the current config
      3. Compare the output from above to determine if there are any staged changes (we will have to ignore changes to `epoch`, both UUIDs, and to `realm_epoch`)
      4. If there are no changes, we are done (return)
      5. If there are changes, we must issue `period update --commit`

BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 11, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
v1.8 automation moved this from To do to Done Oct 12, 2021
mergify bot pushed a commit that referenced this issue Oct 12, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves #8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
(cherry picked from commit eadcd75)

# Conflicts:
#	pkg/operator/ceph/object/controller.go
BlaineEXE added a commit that referenced this issue Oct 12, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves #8879

(cherry picked from commit eadcd75)

rgw: add integration test for committing period

Add to the RGW multisite integration test a verification that the RGW
period is committed on the first reconcile and not committed on the
second reconcile.

Do this in the multisite test so that we verify that this works for
both the primary and secondary multi-site cluster.

To add this test, the github-action-helper.sh script had to be modified
to
1. actually deploy the version of Rook under test
2. adjust how functions are called to not lose the `-e` in a subshell
3. fix wait_for_prepare_pod helper that had a failure in the middle
   of its operation that didn't cause failures in the past

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
(cherry picked from commit 9564308)
BlaineEXE added a commit that referenced this issue Oct 12, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves #8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
(cherry picked from commit eadcd75)
BlaineEXE added a commit that referenced this issue Oct 12, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves #8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
(cherry picked from commit eadcd75)
BlaineEXE added a commit to BlaineEXE/rook that referenced this issue Oct 13, 2021
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
(cherry picked from commit eadcd75)
(cherry picked from commit 903399c)
parth-gr pushed a commit to parth-gr/rook that referenced this issue Feb 22, 2022
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
parth-gr pushed a commit to parth-gr/rook that referenced this issue Feb 22, 2022
Replace calls to 'radosgw-admin period update --commit' with an
idempotent function.

Resolves rook#8879

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
v1.8
Done
Development

Successfully merging a pull request may close this issue.

3 participants