Skip to content

Commit cb9ae15

Browse files
authored
Merge pull request #44 from figma/yfang/add-logging-for-idle-workers
Dump the queue state from idle workers
2 parents 9c7bbbf + e6ff28b commit cb9ae15

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,22 @@ def master?
5050

5151
def poll
5252
wait_for_master
53+
idle_since = nil
54+
idle_state_printed = false
5355
until shutdown_required? || config.circuit_breakers.any?(&:open?) || exhausted? || max_test_failed?
5456
if test = reserve
57+
idle_since = nil
5558
yield index.fetch(test)
5659
else
60+
idle_since ||= Time.now
61+
if Time.now - idle_since > 120 && !idle_state_printed
62+
puts "Worker #{worker_id} has been idle for 120 seconds. Printing global state..."
63+
puts " Processed tests: #{redis.scard(key('processed'))}"
64+
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)}"
66+
puts " Owners: #{redis.hgetall(key('owners'))}"
67+
idle_state_printed = true
68+
end
5769
sleep 0.05
5870
end
5971
end

0 commit comments

Comments
 (0)