Reindex top bloated indexes on registry DB
Production Change
Change Summary
There was an incident last week (#17785 (closed)), that uncovered a potential relationship between index bloating and transient performance degradations. In gitlab-org/container-registry#1233 (comment 1850689395) we also identified that the registry DB index bloating has been steadily increasing.
As we currently lack recurring reindexing on the application side (gitlab-org/container-registry#1236), this change request is to manually reindex the top 100 most bloated indexes (list).
Change Details
- Services Impacted - ServiceContainer Registry
- Change Technician - DRI for the execution of this change
- Change Reviewer - @stomlinson
- Time tracking - 35 minutes
- Downtime Component - If there is a need for downtime, include downtime estimate here
Set Maintenance Mode in GitLab
If your change involves scheduled maintenance, add a step to set and unset maintenance mode per our runbooks. This will make sure SLA calculations adjust for the maintenance period.
Detailed steps for the change
Change Steps - steps to take to execute the change
Estimated Time to Complete (mins) - 30 minutes
-
Set label changein-progress /label ~change::in-progress
-
Execute the following script on the production database: -- enable timing -- \timing -- capture index size before reindexing \di+ partitions.manifest_references_p_13_pkey \di+ partitions.manifest_references_p_13_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_13_top_level_namespace_id_repository__idx \di+ public.pk_gc_manifest_review_queue \di+ partitions.manifest_references_p_19_pkey \di+ partitions.manifest_references_p_19_top_level_namespace_id_repository__key \di+ public.index_gc_blob_review_queue_on_review_after \di+ partitions.manifest_references_p_19_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_1_pkey \di+ partitions.manifest_references_p_1_top_level_namespace_id_repository_i_key \di+ public.pk_gc_blob_review_queue \di+ public.index_gc_manifest_review_queue_on_review_after \di+ partitions.manifest_references_p_27_pkey \di+ partitions.manifest_references_p_1_top_level_namespace_id_repository_i_idx \di+ partitions.manifest_references_p_18_pkey \di+ partitions.manifest_references_p_27_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_18_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_27_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_18_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_8_pkey \di+ partitions.manifest_references_p_4_top_level_namespace_id_repository_i_key \di+ partitions.manifest_references_p_8_top_level_namespace_id_repository_i_key \di+ partitions.manifest_references_p_8_top_level_namespace_id_repository_i_idx \di+ partitions.manifest_references_p_4_pkey \di+ partitions.manifest_references_p_30_pkey \di+ partitions.manifest_references_p_4_top_level_namespace_id_repository_i_idx \di+ partitions.manifest_references_p_30_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_33_pkey \di+ partitions.manifest_references_p_33_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_57_pkey \di+ partitions.manifests_p_38_configuration_blob_digest_idx \di+ partitions.manifest_references_p_57_top_level_namespace_id_repository__idx \di+ partitions.manifests_p_26_configuration_blob_digest_idx \di+ partitions.manifest_references_p_57_top_level_namespace_id_repository__key \di+ partitions.manifests_p_49_configuration_blob_digest_idx \di+ partitions.manifests_p_47_configuration_blob_digest_idx \di+ partitions.manifest_references_p_35_pkey \di+ partitions.manifest_references_p_31_pkey \di+ partitions.manifests_p_61_configuration_blob_digest_idx \di+ partitions.manifest_references_p_31_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_17_pkey \di+ partitions.manifest_references_p_35_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_60_pkey \di+ partitions.manifest_references_p_17_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_60_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_35_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_17_top_level_namespace_id_repository__key \di+ partitions.manifests_p_18_configuration_blob_digest_idx \di+ partitions.manifest_references_p_28_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_39_pkey \di+ partitions.manifest_references_p_55_pkey \di+ partitions.manifest_references_p_48_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_48_pkey \di+ partitions.manifest_references_p_16_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_54_top_level_namespace_id_repository__key \di+ partitions.manifests_p_25_configuration_blob_digest_idx \di+ partitions.manifests_p_9_configuration_blob_digest_idx \di+ partitions.manifest_references_p_16_pkey \di+ partitions.blobs_p_61_pkey \di+ partitions.blobs_p_31_pkey \di+ partitions.manifest_references_p_54_pkey \di+ partitions.blobs_p_13_pkey \di+ partitions.blobs_p_37_pkey \di+ partitions.blobs_p_59_pkey \di+ partitions.blobs_p_3_pkey \di+ partitions.blobs_p_36_pkey \di+ partitions.blobs_p_6_pkey \di+ partitions.blobs_p_5_pkey \di+ partitions.blobs_p_57_pkey \di+ partitions.blobs_p_7_pkey \di+ partitions.blobs_p_27_pkey \di+ partitions.blobs_p_0_pkey \di+ partitions.blobs_p_54_pkey \di+ partitions.blobs_p_46_pkey \di+ partitions.blobs_p_58_pkey \di+ partitions.blobs_p_10_pkey \di+ partitions.blobs_p_45_pkey \di+ partitions.blobs_p_26_pkey \di+ partitions.blobs_p_9_pkey \di+ partitions.blobs_p_49_pkey \di+ partitions.blobs_p_33_pkey \di+ partitions.blobs_p_62_pkey \di+ partitions.blobs_p_40_pkey \di+ partitions.blobs_p_53_pkey \di+ partitions.blobs_p_18_pkey \di+ partitions.blobs_p_52_pkey \di+ partitions.blobs_p_39_pkey \di+ partitions.blobs_p_21_pkey \di+ partitions.blobs_p_63_pkey \di+ partitions.blobs_p_35_pkey \di+ partitions.blobs_p_47_pkey \di+ partitions.blobs_p_24_pkey \di+ partitions.blobs_p_32_pkey \di+ partitions.blobs_p_4_pkey \di+ partitions.blobs_p_17_pkey \di+ partitions.blobs_p_42_pkey \di+ partitions.blobs_p_15_pkey \di+ partitions.manifest_references_p_3_pkey \di+ partitions.manifests_p_1_configuration_blob_digest_idx \di+ partitions.blobs_p_38_pkey -- reindex REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_13_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_13_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_13_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY public.pk_gc_manifest_review_queue; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_19_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_19_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY public.index_gc_blob_review_queue_on_review_after; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_19_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_1_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_1_top_level_namespace_id_repository_i_key; REINDEX INDEX CONCURRENTLY public.pk_gc_blob_review_queue; REINDEX INDEX CONCURRENTLY public.index_gc_manifest_review_queue_on_review_after; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_27_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_1_top_level_namespace_id_repository_i_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_18_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_27_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_18_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_27_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_18_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_8_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_4_top_level_namespace_id_repository_i_key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_8_top_level_namespace_id_repository_i_key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_8_top_level_namespace_id_repository_i_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_4_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_30_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_4_top_level_namespace_id_repository_i_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_30_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_33_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_33_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_57_pkey; REINDEX INDEX CONCURRENTLY partitions.manifests_p_38_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_57_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifests_p_26_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_57_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifests_p_49_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifests_p_47_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_35_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_31_pkey; REINDEX INDEX CONCURRENTLY partitions.manifests_p_61_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_31_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_17_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_35_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_60_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_17_top_level_namespace_id_repository__idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_60_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_35_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_17_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifests_p_18_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_28_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_39_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_55_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_48_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_48_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_16_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_54_top_level_namespace_id_repository__key; REINDEX INDEX CONCURRENTLY partitions.manifests_p_25_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifests_p_9_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_16_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_61_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_31_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_54_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_13_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_37_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_59_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_3_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_36_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_6_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_5_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_57_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_7_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_27_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_0_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_54_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_46_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_58_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_10_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_45_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_26_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_9_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_49_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_33_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_62_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_40_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_53_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_18_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_52_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_39_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_21_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_63_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_35_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_47_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_24_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_32_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_4_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_17_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_42_pkey; REINDEX INDEX CONCURRENTLY partitions.blobs_p_15_pkey; REINDEX INDEX CONCURRENTLY partitions.manifest_references_p_3_pkey; REINDEX INDEX CONCURRENTLY partitions.manifests_p_1_configuration_blob_digest_idx; REINDEX INDEX CONCURRENTLY partitions.blobs_p_38_pkey; -- capture index size after reindexing \di+ partitions.manifest_references_p_13_pkey \di+ partitions.manifest_references_p_13_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_13_top_level_namespace_id_repository__idx \di+ public.pk_gc_manifest_review_queue \di+ partitions.manifest_references_p_19_pkey \di+ partitions.manifest_references_p_19_top_level_namespace_id_repository__key \di+ public.index_gc_blob_review_queue_on_review_after \di+ partitions.manifest_references_p_19_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_1_pkey \di+ partitions.manifest_references_p_1_top_level_namespace_id_repository_i_key \di+ public.pk_gc_blob_review_queue \di+ public.index_gc_manifest_review_queue_on_review_after \di+ partitions.manifest_references_p_27_pkey \di+ partitions.manifest_references_p_1_top_level_namespace_id_repository_i_idx \di+ partitions.manifest_references_p_18_pkey \di+ partitions.manifest_references_p_27_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_18_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_27_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_18_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_8_pkey \di+ partitions.manifest_references_p_4_top_level_namespace_id_repository_i_key \di+ partitions.manifest_references_p_8_top_level_namespace_id_repository_i_key \di+ partitions.manifest_references_p_8_top_level_namespace_id_repository_i_idx \di+ partitions.manifest_references_p_4_pkey \di+ partitions.manifest_references_p_30_pkey \di+ partitions.manifest_references_p_4_top_level_namespace_id_repository_i_idx \di+ partitions.manifest_references_p_30_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_33_pkey \di+ partitions.manifest_references_p_33_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_57_pkey \di+ partitions.manifests_p_38_configuration_blob_digest_idx \di+ partitions.manifest_references_p_57_top_level_namespace_id_repository__idx \di+ partitions.manifests_p_26_configuration_blob_digest_idx \di+ partitions.manifest_references_p_57_top_level_namespace_id_repository__key \di+ partitions.manifests_p_49_configuration_blob_digest_idx \di+ partitions.manifests_p_47_configuration_blob_digest_idx \di+ partitions.manifest_references_p_35_pkey \di+ partitions.manifest_references_p_31_pkey \di+ partitions.manifests_p_61_configuration_blob_digest_idx \di+ partitions.manifest_references_p_31_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_17_pkey \di+ partitions.manifest_references_p_35_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_60_pkey \di+ partitions.manifest_references_p_17_top_level_namespace_id_repository__idx \di+ partitions.manifest_references_p_60_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_35_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_17_top_level_namespace_id_repository__key \di+ partitions.manifests_p_18_configuration_blob_digest_idx \di+ partitions.manifest_references_p_28_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_39_pkey \di+ partitions.manifest_references_p_55_pkey \di+ partitions.manifest_references_p_48_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_48_pkey \di+ partitions.manifest_references_p_16_top_level_namespace_id_repository__key \di+ partitions.manifest_references_p_54_top_level_namespace_id_repository__key \di+ partitions.manifests_p_25_configuration_blob_digest_idx \di+ partitions.manifests_p_9_configuration_blob_digest_idx \di+ partitions.manifest_references_p_16_pkey \di+ partitions.blobs_p_61_pkey \di+ partitions.blobs_p_31_pkey \di+ partitions.manifest_references_p_54_pkey \di+ partitions.blobs_p_13_pkey \di+ partitions.blobs_p_37_pkey \di+ partitions.blobs_p_59_pkey \di+ partitions.blobs_p_3_pkey \di+ partitions.blobs_p_36_pkey \di+ partitions.blobs_p_6_pkey \di+ partitions.blobs_p_5_pkey \di+ partitions.blobs_p_57_pkey \di+ partitions.blobs_p_7_pkey \di+ partitions.blobs_p_27_pkey \di+ partitions.blobs_p_0_pkey \di+ partitions.blobs_p_54_pkey \di+ partitions.blobs_p_46_pkey \di+ partitions.blobs_p_58_pkey \di+ partitions.blobs_p_10_pkey \di+ partitions.blobs_p_45_pkey \di+ partitions.blobs_p_26_pkey \di+ partitions.blobs_p_9_pkey \di+ partitions.blobs_p_49_pkey \di+ partitions.blobs_p_33_pkey \di+ partitions.blobs_p_62_pkey \di+ partitions.blobs_p_40_pkey \di+ partitions.blobs_p_53_pkey \di+ partitions.blobs_p_18_pkey \di+ partitions.blobs_p_52_pkey \di+ partitions.blobs_p_39_pkey \di+ partitions.blobs_p_21_pkey \di+ partitions.blobs_p_63_pkey \di+ partitions.blobs_p_35_pkey \di+ partitions.blobs_p_47_pkey \di+ partitions.blobs_p_24_pkey \di+ partitions.blobs_p_32_pkey \di+ partitions.blobs_p_4_pkey \di+ partitions.blobs_p_17_pkey \di+ partitions.blobs_p_42_pkey \di+ partitions.blobs_p_15_pkey \di+ partitions.manifest_references_p_3_pkey \di+ partitions.manifests_p_1_configuration_blob_digest_idx \di+ partitions.blobs_p_38_pkey
-
Post console output in a comment -
Set label changecomplete /label ~change::complete
Rollback
Not applicable.
Monitoring
Key metrics to observe
- Metric: Registry DB SLI Apdex
- Location: https://dashboards.gitlab.net/d/registry-main/registry-overview?orgId=1&viewPanel=3734296734
- What changes to this metric should prompt a rollback: While there are no rollback steps here, the execution of the script should be halted if a noticeable dip in the apdex is observed.
Change Reviewer checklist
-
Check if the following applies: - The scheduled day and time of execution of the change is appropriate.
- The change plan is technically accurate.
- The change plan includes estimated timing values based on previous testing.
- The change plan includes a viable rollback plan.
- The specified metrics/monitoring dashboards provide sufficient visibility for the change.
-
Check if the following applies: - The complexity of the plan is appropriate for the corresponding risk of the change. (i.e. the plan contains clear details).
- The change plan includes success measures for all steps/milestones during the execution.
- The change adequately minimizes risk within the environment/service.
- The performance implications of executing the change are well-understood and documented.
- The specified metrics/monitoring dashboards provide sufficient visibility for the change.
- If not, is it possible (or necessary) to make changes to observability platforms for added visibility?
- The change has a primary and secondary SRE with knowledge of the details available during the change window.
- The change window has been agreed with Release Managers in advance of the change. If the change is planned for APAC hours, this issue has an agreed pre-change approval.
- The labels blocks deployments and/or blocks feature-flags are applied as necessary.
Change Technician checklist
-
Check if all items below are complete: - The change plan is technically accurate.
- This Change Issue is linked to the appropriate Issue and/or Epic
- Change has been tested in staging and results noted in a comment on this issue.
- A dry-run has been conducted and results noted in a comment on this issue.
- The change execution window respects the Production Change Lock periods.
- For C1 and C2 change issues, the change event is added to the GitLab Production calendar.
- For C1 and C2 change issues, the SRE on-call has been informed prior to change being rolled out. (In #production channel, mention
@sre-oncall
and this issue and await their acknowledgement.) - For C1 and C2 change issues, the SRE on-call provided approval with the eoc_approved label on the issue.
- For C1 and C2 change issues, the Infrastructure Manager provided approval with the manager_approved label on the issue.
- Release managers have been informed prior to any C1, C2, or blocks deployments change being rolled out. (In #production channel, mention
@release-managers
and this issue and await their acknowledgment.) - There are currently no active incidents that are severity1 or severity2
- If the change involves doing maintenance on a database host, an appropriate silence targeting the host(s) should be added for the duration of the change.
Edited by Simon Tomlinson