diff --git a/app/workers/members/prune_deletions_worker.rb b/app/workers/members/prune_deletions_worker.rb index 134b4d61de57c250c5af996e7da6d3ecab9959be..29ad90a36e189b2e9b044c9b0c0fd70fb860dbf5 100644 --- a/app/workers/members/prune_deletions_worker.rb +++ b/app/workers/members/prune_deletions_worker.rb @@ -52,15 +52,17 @@ def remove_user_from_namespace(member_deletion_schedule) memberships = ::Member.in_hierarchy(namespace).with_user(user).limit(MEMBER_BATCH_SIZE) destroyed_count = 0 - memberships.each do |member| - # limit deletion to execute only for 60s (execution_tracker::MAX_RUNTIME) - break if execution_tracker.over_limit? - - ::Members::DestroyService.new(scheduled_by).execute(member, skip_subresources: true) - destroyed_count += 1 + destroy_duration = Benchmark.realtime do + memberships.each do |member| + # limit deletion to execute only for 60s (execution_tracker::MAX_RUNTIME) + break if execution_tracker.over_limit? + + ::Members::DestroyService.new(scheduled_by).execute(member, skip_subresources: true) + destroyed_count += 1 + end end - log_monitoring_data(user.id, namespace.id, destroyed_count) + log_monitoring_data(user.id, namespace.id, destroyed_count, destroy_duration) # when all memberships removed, cleanup schedule: member_deletion_schedule.destroy! if memberships.count === 0 @@ -71,12 +73,13 @@ def member_deletion_schedules end strong_memoize_attr :member_deletion_schedules - def log_monitoring_data(user_id, namespace_id, destroyed_count) + def log_monitoring_data(user_id, namespace_id, destroyed_count, destroy_duration) Gitlab::AppLogger.info( message: 'Processed scheduled member deletion', user_id: user_id, namespace_id: namespace_id, - destroyed_count: destroyed_count + destroyed_count: destroyed_count, + destroy_duration_s: destroy_duration ) end end diff --git a/spec/workers/members/prune_deletions_worker_spec.rb b/spec/workers/members/prune_deletions_worker_spec.rb index b94eb93f73e59bee236488a9d29d930e05e493aa..e05320f848cf649c0074a9418a18100f31f07f34 100644 --- a/spec/workers/members/prune_deletions_worker_spec.rb +++ b/spec/workers/members/prune_deletions_worker_spec.rb @@ -59,7 +59,8 @@ message: 'Processed scheduled member deletion', user_id: user.id, namespace_id: group.id, - destroyed_count: 1 + destroyed_count: 1, + destroy_duration_s: an_instance_of(Float) ) perform_work