Skip to content

Commit ae3b2f1

Browse files
authored
[CI] report who is the master worker (#78)
report who is the master worker
2 parents a044e7e + 82eff75 commit ae3b2f1

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ def idle?
7373

7474
def poll
7575
wait_for_master
76+
if master?
77+
warn "Worker #{worker_id} is the master"
78+
else
79+
master_id = master_worker_id
80+
warn "Worker #{worker_id} saw master worker: #{master_id}" if master_id
81+
end
7682
idle_since = nil
7783
idle_state_printed = false
7884
until shutdown_required? || config.circuit_breakers.any?(&:open?) || exhausted? || max_test_failed?
@@ -297,6 +303,18 @@ def acquire_master_role?
297303
return true if @master
298304

299305
@master = redis.setnx(key('master-status'), 'setup')
306+
if @master
307+
begin
308+
redis.set(key('master-worker-id'), worker_id)
309+
redis.expire(key('master-worker-id'), config.redis_ttl)
310+
warn "Worker #{worker_id} elected as master"
311+
rescue *CONNECTION_ERRORS
312+
# If setting master-worker-id fails, we still have master status
313+
# Log but don't lose master role
314+
warn("Failed to set master-worker-id: #{$!.message}")
315+
end
316+
end
317+
@master
300318
rescue *CONNECTION_ERRORS
301319
@master = nil
302320
false

0 commit comments

Comments
 (0)