@@ -328,6 +328,42 @@ def perform_action
328328 end
329329end
330330
331+ ## Queue manipulation action using new mrt-zk - special handling to skip downloading
332+ class ZkRequeueSpecialAction < ZkAction
333+ def perform_action
334+ if @qpath =~ /access/
335+ acc = MerrittZK ::Access . new ( get_access_queue , get_id )
336+ acc . load ( @zk )
337+ acc . set_status ( @zk , MerrittZK ::AccessState ::Pending )
338+ { message : "Acc #{ acc . id } requeued " } . to_json
339+ else
340+ job = MerrittZK ::Job . new ( get_id )
341+ job . load ( @zk )
342+ js = job . json_property ( @zk , MerrittZK ::ZkKeys ::STATUS )
343+ laststat = js . fetch ( :last_successful_status , '' )
344+
345+ job . lock ( @zk )
346+
347+ case laststat
348+ when 'Pending' , '' , nil
349+ job . set_status ( @zk , MerrittZK ::JobState ::Estimating , job_retry : true )
350+ when 'Estimating'
351+ job . set_status ( @zk , MerrittZK ::JobState ::Provisioning , job_retry : true )
352+ when 'Provisioning' || 'Downloading'
353+ job . set_status ( @zk , MerrittZK ::JobState ::Processing , job_retry : true )
354+ when 'Processing'
355+ job . set_status ( @zk , MerrittZK ::JobState ::Recording , job_retry : true )
356+ when 'Recording'
357+ job . set_status ( @zk , MerrittZK ::JobState ::Notify , job_retry : true )
358+ end
359+
360+ job . unlock ( @zk )
361+
362+ { message : "Job #{ job . id } requeued to status #{ job . status_name } " } . to_json
363+ end
364+ end
365+ end
366+
331367## Queue manipulation action using new mrt-zk
332368class ZkDeleteAction < ZkAction
333369 def perform_action
0 commit comments