Commit 67f29f23 authored by Peter Leitzen's avatar Peter Leitzen
Browse files

Merge branch 'perf/optimize-mutex-contention' into 'master'

perf: reduce mutex contention with early checks

See merge request !234

Merged-by: default avatarPeter Leitzen <pleitzen@gitlab.com>
Approved-by: default avatarPeter Leitzen <pleitzen@gitlab.com>
Reviewed-by: default avatarGitLab Duo <gitlab-duo@gitlab.com>
Co-authored-by: default avatardbarrett <dbarrett@gitlab.com>
parents 253354dd 86ae8977
Loading
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ module Labkit
        def record_offense(callsite, lineno, deprecated_field, standard_field, logger_class)
          key = [callsite, deprecated_field, logger_class].freeze

          return if @offense_keys.include?(key)

          @mutex.synchronize do
            next if @offense_keys.include?(key)

@@ -35,16 +37,15 @@ module Labkit
              'logger_class' => logger_class
            }.freeze

            # If this offense was previously marked as removed, undo that
            @removed_offenses.reject! { |r| offense_key(r) == key }
          end
        end

        def check_for_removed_offenses(callsite, fields, logger_class)
          @mutex.synchronize do
          baseline = baseline_by_callsite[[callsite, logger_class]]
            next unless baseline
          return unless baseline

          @mutex.synchronize do
            baseline.each do |offense|
              key = offense_key(offense)
              next if @offense_keys.include?(key)