From 286d0efa2df8ebb9dff319b12c85f47720be5288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 28 May 2024 14:23:13 +0200 Subject: [PATCH] Manager: speed up job deletion by skipping the DB integrity check Speed up the deletion of multiple jobs by skipping the database integrity check. It is now clear what was causing the integrity issues (disabled foreign key constraints), and this is now checked for before deleting anything. This reduces the deletion time from ~500ms per job to ~150ms (on my computer, with my database, of course). --- internal/manager/job_deleter/job_deleter.go | 4 ---- internal/manager/job_deleter/job_deleter_test.go | 2 -- 2 files changed, 6 deletions(-) diff --git a/internal/manager/job_deleter/job_deleter.go b/internal/manager/job_deleter/job_deleter.go index 5e65bc79..f85db04f 100644 --- a/internal/manager/job_deleter/job_deleter.go +++ b/internal/manager/job_deleter/job_deleter.go @@ -231,10 +231,6 @@ func (s *Service) deleteJob(ctx context.Context, jobUUID string) error { Stringer("duration", duration). Msg("job deleter: job removal complete") - // Request a consistency check on the database. In the past there have been - // some issues after deleting a job. - s.persist.RequestIntegrityCheck() - return nil } diff --git a/internal/manager/job_deleter/job_deleter_test.go b/internal/manager/job_deleter/job_deleter_test.go index 6b347196..84c6a64b 100644 --- a/internal/manager/job_deleter/job_deleter_test.go +++ b/internal/manager/job_deleter/job_deleter_test.go @@ -110,7 +110,6 @@ func TestDeleteJobWithoutShaman(t *testing.T) { // Mock that everything went OK. mocks.storage.EXPECT().RemoveJobStorage(mocks.ctx, jobUUID) mocks.persist.EXPECT().DeleteJob(mocks.ctx, jobUUID) - mocks.persist.EXPECT().RequestIntegrityCheck() mocks.broadcaster.EXPECT().BroadcastJobUpdate(gomock.Any()) require.NoError(t, s.deleteJob(mocks.ctx, jobUUID)) } @@ -155,7 +154,6 @@ func TestDeleteJobWithShaman(t *testing.T) { mocks.shaman.EXPECT().EraseCheckout(shamanCheckoutID) mocks.storage.EXPECT().RemoveJobStorage(mocks.ctx, jobUUID) mocks.persist.EXPECT().DeleteJob(mocks.ctx, jobUUID) - mocks.persist.EXPECT().RequestIntegrityCheck() mocks.broadcaster.EXPECT().BroadcastJobUpdate(gomock.Any()) require.NoError(t, s.deleteJob(mocks.ctx, jobUUID)) }