Bug with configuring Inactive Project Deletion - 'You can't delete projects before the warning email is sent'
Summary
- Inactive project deletion is a feature that will automatically prune projects once they pass an inactivity interval threshold.
- This occurs in two stages:
- An email is sent out after
x
months of inactivity to notify the project maintainers - The project is deleted after
x+y
months of inactivity
- An email is sent out after
- Once the configuration is changed, the original values
1
and2
(respectively, per the above fields) will not be accepted as a valid configuration. - This is also true of any configuration, for example if the fields are configured with
3
and4
the form will no longer accept values less than these.
Steps to reproduce
- Enable inactive project deletion on an self-managed instance
- Observe the initial configuration:
-
Delete project after
:2
-
Send email after
:1
- Change these fields to
3
and2
respectively and click Save - Change the fields back to
2
and1
, respectively - reflecting the initial field values - Attempt to save the configuration
- A browser form validation popover will appear, stating 'You can't delete projects before the warning email is sent' (see screenshot below)
What is the current bug behavior?
- The fields can only be configured with higher and higher values
What is the expected correct behavior?
- As long as the values are valid (
email after
is less thandelete after
), the configuration should be saved
Relevant logs and/or screenshots
Output of checks
Results of GitLab environment info
- Tested on self-managed versions:
-
16.6.4
(Customer ticket) 16.10
-
Expand for output related to GitLab environment info
(For installations with omnibus-gitlab package run and paste the output of: `sudo gitlab-rake gitlab:env:info`) (For installations from source run and paste the output of: `sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production`)
Results of GitLab application Check
Expand for output related to the GitLab application check
(For installations with omnibus-gitlab package run and paste the output of:
sudo gitlab-rake gitlab:check SANITIZE=true
)(For installations from source run and paste the output of:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production SANITIZE=true
)(we will only investigate if the tests are passing)
Explanation of bug
- Delete Project Field is 3 and Email After Field is 2 to start.
-
Delete Project Field is updated from 3 => 2
- HAML marks Delete Project Field invalid as Delete Project Field isn't greater than Email After Field
-
Email After Field is updated form 2 => 1
- HAML marks Email After Field valid as Email After Field is less than Delete Project Field
- Issue: Nothing ever goes back and marks Delete Project Field as valid since it wasn't updated again.
Proposed fix
Instead of events, use watchers to better align when something changes and when we need to inform the HAML view
Implementation plan
- Add 2 new watchers to
app/assets/javascripts/admin/application_settings/inactive_project_deletion/components/form.vue
watch: {
isSendWarningEmailAfterMonthsValid() {
this.checkValidity(this.$refs.sendWarningEmailAfterMonthsInput, this.$options.i18n.sendWarningEmailAfterMonthsInvalidFeedback, this.isSendWarningEmailAfterMonthsValid)
},
isDeleteAfterMonthsValid() {
this.checkValidity(this.$refs.deleteAfterMonthsInput, this.$options.i18n.deleteAfterMonthsInvalidFeedback, this.isDeleteAfterMonthsValid)
}
},
- Delete
@change
events from Delete project after field and Send warning email field inapp/assets/javascripts/admin/application_settings/inactive_project_deletion/components/form.vue
Edited by Christina Lohr