From 0c7149178d92334e64370a72b3faef9cd0e0783e Mon Sep 17 00:00:00 2001 From: Christian Bruckmayer Date: Mon, 30 Jun 2025 13:39:15 +0100 Subject: [PATCH] Fix race condition in success report --- ruby/lib/ci/queue/redis/build_record.rb | 10 +++++----- ruby/test/integration/minitest_redis_test.rb | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ruby/lib/ci/queue/redis/build_record.rb b/ruby/lib/ci/queue/redis/build_record.rb index 1f0fac38..a1850482 100644 --- a/ruby/lib/ci/queue/redis/build_record.rb +++ b/ruby/lib/ci/queue/redis/build_record.rb @@ -68,11 +68,11 @@ def record_error(id, payload, stats: nil) end def record_success(id, stats: nil, skip_flaky_record: false, acknowledge: true) - @queue.acknowledge(id) if acknowledge - error_reports_deleted_count, requeued_count, _ = redis.pipelined do |pipeline| - pipeline.hdel(key('error-reports'), id) - pipeline.hget(key('requeues-count'), id) - record_stats(stats, pipeline: pipeline) + _, error_reports_deleted_count, requeued_count, _ = redis.multi do |transaction| + @queue.acknowledge(id, pipeline: transaction) if acknowledge + transaction.hdel(key('error-reports'), id) + transaction.hget(key('requeues-count'), id) + record_stats(stats, pipeline: transaction) end record_flaky(id) if !skip_flaky_record && (error_reports_deleted_count.to_i > 0 || requeued_count.to_i > 0) nil diff --git a/ruby/test/integration/minitest_redis_test.rb b/ruby/test/integration/minitest_redis_test.rb index 0cdd1f00..370c516c 100644 --- a/ruby/test/integration/minitest_redis_test.rb +++ b/ruby/test/integration/minitest_redis_test.rb @@ -881,6 +881,7 @@ def test_redis_reporter_flaky_tests_file content = File.read(flaky_tests_file) flaky_tests = JSON.parse(content) assert_includes flaky_tests, "ATest#test_flaky" + assert_equal 1, flaky_tests.count end end