Skip to content

Commit ddba06e

Browse files
authored
Merge pull request #45 from figma/ebarajas/additional-logging-idle-workers
add additional logging when workers are idle
2 parents cb9ae15 + 4e6eebf commit ddba06e

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

ruby/lib/ci/queue/redis/worker.rb

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ class Worker < Base
1818
def initialize(redis, config)
1919
@reserved_test = nil
2020
@shutdown_required = false
21+
@idle_since = nil
2122
super(redis, config)
2223
end
2324

25+
attr_accessor :idle_since
26+
2427
def distributed?
2528
true
2629
end
@@ -48,6 +51,10 @@ def master?
4851
@master
4952
end
5053

54+
def idle?
55+
!(@idle_since.nil?)
56+
end
57+
5158
def poll
5259
wait_for_master
5360
idle_since = nil
@@ -60,10 +67,17 @@ def poll
6067
idle_since ||= Time.now
6168
if Time.now - idle_since > 120 && !idle_state_printed
6269
puts "Worker #{worker_id} has been idle for 120 seconds. Printing global state..."
70+
running_tests = redis.zrange(key('running'), 0, -1, withscores: true)
6371
puts " Processed tests: #{redis.scard(key('processed'))}"
6472
puts " Pending tests: #{redis.llen(key('queue'))}. #{redis.lrange(key('queue'), 0, -1)}"
65-
puts " Running tests: #{redis.zcard(key('running'))}. #{redis.zrange(key('running'), 0, -1)}"
73+
puts " Running tests: #{running_tests.size}. #{running_tests}"
6674
puts " Owners: #{redis.hgetall(key('owners'))}"
75+
unless running_tests.empty?
76+
puts " Checking if running tests are in processed set:"
77+
running_tests.each do |test, _score|
78+
puts " #{test}: #{redis.sismember(key('processed'), test)}"
79+
end
80+
end
6781
idle_state_printed = true
6882
end
6983
sleep 0.05
@@ -203,6 +217,12 @@ def try_to_reserve_lost_test
203217
argv: [Time.now.to_f, timeout],
204218
)
205219

220+
if lost_test.nil? && idle?
221+
puts "Worker #{worker_id} could not reserve a lost test while idle"
222+
puts "Printing running tests:"
223+
puts "#{redis.zrange(key('running'), 0, -1, withscores: true)}"
224+
end
225+
206226
if lost_test
207227
build.record_warning(Warnings::RESERVED_LOST_TEST, test: lost_test, timeout: timeout)
208228
end

0 commit comments

Comments
 (0)