Skip to content
Snippets Groups Projects
Commit 74729c56 authored by Sean McGivern's avatar Sean McGivern
Browse files

Merge branch '329357-move-rebalancing-outside-transaction' into 'master'

Rebalance without transaction

See merge request gitlab-org/gitlab!68746
parents a2639ccd 8623992f
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -8,41 +8,29 @@
let_it_be(:project) { create(:project, group: group) }
let_it_be(:issue) { create(:issue, project: project) }
 
context 'when block_issue_repositioning is enabled' do
before do
stub_feature_flags(block_issue_repositioning: group)
end
it 'does not run an instance of IssueRebalancingService' do
expect(IssueRebalancingService).not_to receive(:new)
described_class.new.perform(nil, issue.project_id)
end
end
shared_examples 'running the worker' do
it 'runs an instance of IssueRebalancingService' do
it 'runs an instance of Issues::RelativePositionRebalancingService' do
service = double(execute: nil)
service_param = arguments.second.present? ? kind_of(Project.id_in([project]).class) : kind_of(group&.all_projects.class)
 
expect(IssueRebalancingService).to receive(:new).with(service_param).and_return(service)
expect(Issues::RelativePositionRebalancingService).to receive(:new).with(service_param).and_return(service)
 
described_class.new.perform(*arguments)
end
 
it 'anticipates there being too many issues' do
it 'anticipates there being too many concurent rebalances' do
service = double
service_param = arguments.second.present? ? kind_of(Project.id_in([project]).class) : kind_of(group&.all_projects.class)
 
allow(service).to receive(:execute).and_raise(IssueRebalancingService::TooManyIssues)
expect(IssueRebalancingService).to receive(:new).with(service_param).and_return(service)
expect(Gitlab::ErrorTracking).to receive(:log_exception).with(IssueRebalancingService::TooManyIssues, include(project_id: arguments.second, root_namespace_id: arguments.third))
allow(service).to receive(:execute).and_raise(Issues::RelativePositionRebalancingService::TooManyConcurrentRebalances)
expect(Issues::RelativePositionRebalancingService).to receive(:new).with(service_param).and_return(service)
expect(Gitlab::ErrorTracking).to receive(:log_exception).with(Issues::RelativePositionRebalancingService::TooManyConcurrentRebalances, include(project_id: arguments.second, root_namespace_id: arguments.third))
 
described_class.new.perform(*arguments)
end
 
it 'takes no action if the value is nil' do
expect(IssueRebalancingService).not_to receive(:new)
expect(Issues::RelativePositionRebalancingService).not_to receive(:new)
expect(Gitlab::ErrorTracking).not_to receive(:log_exception)
 
described_class.new.perform # all arguments are nil
Loading
Loading
@@ -52,7 +40,7 @@
shared_examples 'safely handles non-existent ids' do
it 'anticipates the inability to find the issue' do
expect(Gitlab::ErrorTracking).to receive(:log_exception).with(ArgumentError, include(project_id: arguments.second, root_namespace_id: arguments.third))
expect(IssueRebalancingService).not_to receive(:new)
expect(Issues::RelativePositionRebalancingService).not_to receive(:new)
 
described_class.new.perform(*arguments)
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment