Merge branch '15094-throttling-pushes_since_gc' into 'master'
Throttle the update of `project.pushes_since_gc` to 1 minute ## What does this MR do? Throttle the update of `project.pushes_since_gc` to alleviate DB load ## What are the relevant issue numbers? Relates to #15094 ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - ~~[ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)~~ - ~~[ ] API support added~~ - Tests - ~~[ ] Added for this feature/bug~~ - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if you do - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !5083
This commit is contained in:
commit
22780c4ac3
|
@ -26,6 +26,7 @@ v 8.10.0 (unreleased)
|
|||
- Add "Enabled Git access protocols" to Application Settings
|
||||
- Fix user creation with stronger minimum password requirements !4054 (nathan-pmt)
|
||||
- PipelinesFinder uses git cache data
|
||||
- Throttle the update of `project.pushes_since_gc` to 1 minute.
|
||||
- Check for conflicts with existing Project's wiki path when creating a new project.
|
||||
- Don't instantiate a git tree on Projects show default view
|
||||
- Bump Rinku to 2.0.0
|
||||
|
|
|
@ -27,7 +27,7 @@ module Projects
|
|||
GitlabShellOneShotWorker.perform_async(:gc, @project.repository_storage_path, @project.path_with_namespace)
|
||||
ensure
|
||||
Gitlab::Metrics.measure(:reset_pushes_since_gc) do
|
||||
@project.update_column(:pushes_since_gc, 0)
|
||||
update_pushes_since_gc(0)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -37,12 +37,18 @@ module Projects
|
|||
|
||||
def increment!
|
||||
Gitlab::Metrics.measure(:increment_pushes_since_gc) do
|
||||
@project.increment!(:pushes_since_gc)
|
||||
update_pushes_since_gc(@project.pushes_since_gc + 1)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_pushes_since_gc(new_value)
|
||||
if Gitlab::ExclusiveLease.new("project_housekeeping:update_pushes_since_gc:#{project.id}", timeout: 60).try_obtain
|
||||
@project.update_column(:pushes_since_gc, new_value)
|
||||
end
|
||||
end
|
||||
|
||||
def try_obtain_lease
|
||||
Gitlab::Metrics.measure(:obtain_housekeeping_lease) do
|
||||
lease = ::Gitlab::ExclusiveLease.new("project_housekeeping:#{@project.id}", timeout: LEASE_TIMEOUT)
|
||||
|
|
Loading…
Reference in New Issue