Skip to content

Allow saving repository weights after a storage has been removed

James Fargher requested to merge fix_repo_storage_weights_admin into master

What does this MR do?

Fixes #241752 (closed)

Previously if a storage was removed but the weight for that storage still existed in the database, the admin page would no longer allow updating any weights. This MR uses the same strategy as the admin API does, completely replace the entire hstore field on each update.

  • Update project storage selection logic to include only currently configured storages.
  • Switch from using store_accessor to using form helpers on the hstore via OpenStruct. This allows the entire hstore to be overwritten, removing any storages that are no longer present in the config.

Steps to reproduce (GDK)

Omnibus instructions are in the issue

  1. Add more storages in gdk.yml and gdk reconfigure && gdk restart:
    gitaly:
      storage_count: 5
  2. Update repository storage weights: Screen_Shot_2021-02-16_at_12.08.24_PM
  3. Remove storages in gdk.yml and gdk reconfigure && gdk restart:
    gitaly:
      storage_count: 4
  4. Update repository storage weights:
    • Before fix: Screen_Shot_2021-02-16_at_12.13.31_PM
    • After fix: Screen_Shot_2021-02-16_at_12.15.13_PM

🎉 🎉 🎉 🎉 🎉 🎉 🎉

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by James Fargher

Merge request reports