File tree Expand file tree Collapse file tree 2 files changed +30
-3
lines changed
Expand file tree Collapse file tree 2 files changed +30
-3
lines changed Original file line number Diff line number Diff line change 1818
1919for _ , test in ipairs (lost_tests ) do
2020 if redis .call (' sismember' , processed_key , test ) == 0 then
21+ -- Get previous owner before updating
22+ local previous_owner_key = redis .call (' hget' , owners_key , test )
23+ local previous_owner = nil
24+ if previous_owner_key then
25+ -- Extract worker_id from key format: build:<build_id>:worker:<worker_id>:queue
26+ previous_owner = string.match (previous_owner_key , " worker:([^:]+):queue" )
27+ end
28+
2129 if use_dynamic_deadline then
2230 local dynamic_timeout = redis .call (' hget' , test_group_timeout_key , test )
2331 if not dynamic_timeout or dynamic_timeout == " " then
@@ -31,7 +39,13 @@ for _, test in ipairs(lost_tests) do
3139 end
3240 redis .call (' lpush' , worker_queue_key , test )
3341 redis .call (' hset' , owners_key , test , worker_queue_key ) -- Take ownership
34- return test
42+
43+ -- Return test and previous owner (separated by |)
44+ if previous_owner then
45+ return test .. " |" .. previous_owner
46+ else
47+ return test .. " |unknown"
48+ end
3549 end
3650end
3751
Original file line number Diff line number Diff line change @@ -288,7 +288,8 @@ def try_to_reserve_test
288288
289289 def try_to_reserve_lost_test
290290 current_time = CI ::Queue . time_now . to_f
291- lost_test = eval_script (
291+
292+ result = eval_script (
292293 :reserve_lost ,
293294 keys : [
294295 key ( 'running' ) ,
@@ -300,6 +301,15 @@ def try_to_reserve_lost_test
300301 argv : [ current_time , timeout , 'true' , config . timeout ]
301302 )
302303
304+ # Parse result: format is "test_id|previous_owner" or nil
305+ lost_test = nil
306+ previous_owner = nil
307+ if result
308+ parts = result . split ( '|' , 2 )
309+ lost_test = parts [ 0 ]
310+ previous_owner = parts [ 1 ] if parts . length > 1
311+ end
312+
303313 if lost_test
304314 # Check what timeout was used (dynamic or default)
305315 dynamic_timeout = redis . hget ( key ( 'test-group-timeout' ) , lost_test )
@@ -327,7 +337,10 @@ def try_to_reserve_lost_test
327337 "default_timeout=#{ config . timeout } s"
328338 end
329339
330- warn "[reserve_lost] test=#{ lost_test } current_time=#{ current_time_readable } (#{ current_time } ) deadline=#{ deadline_readable } (#{ deadline } ) gap=#{ gap_seconds_formatted } s (#{ gap_hours } h#{ gap_mins } m#{ gap_secs_formatted } s) [#{ timeout_details } ]"
340+ # Add previous owner information (from Lua script)
341+ previous_owner_info = previous_owner ? "previous_owner=#{ previous_owner } " : 'previous_owner=unknown'
342+
343+ warn "[reserve_lost] test=#{ lost_test } current_time=#{ current_time_readable } (#{ current_time } ) deadline=#{ deadline_readable } (#{ deadline } ) gap=#{ gap_seconds_formatted } s (#{ gap_hours } h#{ gap_mins } m#{ gap_secs_formatted } s) [#{ timeout_details } ] [#{ previous_owner_info } ]"
331344 end
332345
333346 if lost_test . nil? && idle?
You can’t perform that action at this time.
0 commit comments