From 962426ec33345b76e6e94a2d999f51e8221f6c99 Mon Sep 17 00:00:00 2001 From: Christian Schwede Date: Thu, 3 Sep 2020 11:26:45 +0200 Subject: [PATCH] Fix Swift ring file synchronization issue Swift ring files are synchronized by up- and downloading them to the undercloud, making sure every node on the overcloud has the same copy to start with. One (optional) step in the process is to ensure rings are in sync before uploading them eventually. swift-recon is used to query all Swift object storage nodes, get the md5sum of the ring files and compare them with the local ring file md5sum. However, in containerized deployments this will fail, because Swift containers are not immediately restarted after rebalancing. The object server will return the md5sum of the previous ring version, which does not match with the rebalanced local file. TripleO is intended to skip this check by setting skip_consistency_check to false. However, the parameter was never set to false, and this patch fixes it. Running an overcloud update immediately after an initial deployment was not affected by this. Same for multiple overcloud updates - subsequent updates did fix this issue automatically. In the first case the rings were not rebalanced due to min_part_hours not passed, in the latter case they were synchronized on the subsequent update. Closes-Bug: 1892674 Change-Id: Ib56f59b7d2a981196eab334108d42ca4390c0566 (cherry picked from commit 13cc41a23f376c61af8fe78df32abf3781e107b0) --- deployment/swift/swift-ringbuilder-container-puppet.yaml | 2 +- .../notes/swift-fix-ring-sync-7bf3ddbb1ea1e342.yaml | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/swift-fix-ring-sync-7bf3ddbb1ea1e342.yaml diff --git a/deployment/swift/swift-ringbuilder-container-puppet.yaml b/deployment/swift/swift-ringbuilder-container-puppet.yaml index 5f35d62a6e..b698fb5ea6 100644 --- a/deployment/swift/swift-ringbuilder-container-puppet.yaml +++ b/deployment/swift/swift-ringbuilder-container-puppet.yaml @@ -82,7 +82,7 @@ outputs: value: service_name: swift_ringbuilder config_settings: - tripleo::profile::base::swift::ringbuilder:skip_consistency_check: true + tripleo::profile::base::swift::ringbuilder::skip_consistency_check: true tripleo::profile::base::swift::ringbuilder::swift_ring_get_tempurl: {get_param: SwiftRingGetTempurl} tripleo::profile::base::swift::ringbuilder::swift_ring_put_tempurl: {get_param: SwiftRingPutTempurl} tripleo::profile::base::swift::ringbuilder::build_ring: {get_param: SwiftRingBuild} diff --git a/releasenotes/notes/swift-fix-ring-sync-7bf3ddbb1ea1e342.yaml b/releasenotes/notes/swift-fix-ring-sync-7bf3ddbb1ea1e342.yaml new file mode 100644 index 0000000000..32f08d8c16 --- /dev/null +++ b/releasenotes/notes/swift-fix-ring-sync-7bf3ddbb1ea1e342.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + Fix Swift ring synchronization to ensure every node on the overcloud has + the same copy to start with. This is especially required when replacing + nodes or using manually modifed rings.