From 2821988b4b6434a5675ffd6ea4da481a0d335e07 Mon Sep 17 00:00:00 2001 From: David Stosik Date: Tue, 19 Aug 2025 14:23:42 +0900 Subject: [PATCH] Use `Concurrent::Set` instead of `Set` ci-queue depends on ActiveSupport, which depends on concurrent-ruby, so we do have access to `Concurrent::Set`. --- ruby/lib/ci/queue/redis/worker.rb | 6 +++--- ruby/lib/ci/queue/static.rb | 4 +++- ruby/test/integration/minitest_redis_test.rb | 3 ++- ruby/test/minitest/queue/build_status_recorder_test.rb | 3 ++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ruby/lib/ci/queue/redis/worker.rb b/ruby/lib/ci/queue/redis/worker.rb index 0b9781b6..9445f339 100644 --- a/ruby/lib/ci/queue/redis/worker.rb +++ b/ruby/lib/ci/queue/redis/worker.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true require 'ci/queue/static' -require 'set' +require 'concurrent/set' module CI module Queue @@ -16,7 +16,7 @@ class Worker < Base attr_reader :total def initialize(redis, config) - @reserved_tests = Set.new + @reserved_tests = Concurrent::Set.new @shutdown_required = false super(redis, config) end @@ -154,7 +154,7 @@ def release! attr_reader :index def reserved_tests - @reserved_tests ||= Set.new + @reserved_tests ||= Concurrent::Set.new end def worker_id diff --git a/ruby/lib/ci/queue/static.rb b/ruby/lib/ci/queue/static.rb index 1e725288..ecdf2b84 100644 --- a/ruby/lib/ci/queue/static.rb +++ b/ruby/lib/ci/queue/static.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'concurrent/set' + module CI module Queue class Static @@ -145,7 +147,7 @@ def requeues end def reserved_tests - @reserved_tests ||= Set.new + @reserved_tests ||= Concurrent::Set.new end end end diff --git a/ruby/test/integration/minitest_redis_test.rb b/ruby/test/integration/minitest_redis_test.rb index a0ab6c2c..45e3f29f 100644 --- a/ruby/test/integration/minitest_redis_test.rb +++ b/ruby/test/integration/minitest_redis_test.rb @@ -3,6 +3,7 @@ require 'tmpdir' require 'active_support' require 'active_support/testing/time_helpers' +require 'concurrent/set' module Integration class MinitestRedisTest < Minitest::Test @@ -509,7 +510,7 @@ def test_retry_report assert_equal 100, error_reports.size error_reports.keys.each_with_index do |test_id, index| - queue.instance_variable_set(:@reserved_tests, Set.new([test_id])) + queue.instance_variable_set(:@reserved_tests, Concurrent::Set.new([test_id])) queue.build.record_success(test_id.dup, stats: { 'assertions' => index + 1, 'errors' => 0, diff --git a/ruby/test/minitest/queue/build_status_recorder_test.rb b/ruby/test/minitest/queue/build_status_recorder_test.rb index 3b9f35c6..c78833a8 100644 --- a/ruby/test/minitest/queue/build_status_recorder_test.rb +++ b/ruby/test/minitest/queue/build_status_recorder_test.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true require 'test_helper' +require 'concurrent/set' module Minitest::Queue class BuildStatusRecorderTest < Minitest::Test @@ -123,7 +124,7 @@ def test_static_queue_record_success private def reserve(queue, method_name) - queue.instance_variable_set(:@reserved_tests, Set.new([Minitest::Queue::SingleExample.new("Minitest::Test", method_name).id])) + queue.instance_variable_set(:@reserved_tests, Concurrent::Set.new([Minitest::Queue::SingleExample.new("Minitest::Test", method_name).id])) end def worker(id)