@@ -502,6 +502,13 @@ def transition_device_to_buffered(self, name, transition_list, h5file, restart_r
502502 @inmain_decorator (wait_for_return = True )
503503 def get_device_error_state (self ,name ,device_list ):
504504 return device_list [name ].error_message
505+
506+ def _abort_buffered_devices (self , devices_in_use , restart_function ):
507+ self .current_queue = queue .Queue ()
508+ for devicename , tab in devices_in_use .items ():
509+ if tab .mode == MODE_BUFFERED or tab .mode == MODE_TRANSITION_TO_BUFFERED :
510+ tab .abort_buffered (self .current_queue )
511+ inmain (tab .disconnect_restart_receiver , restart_function )
505512
506513
507514 def manage (self ):
@@ -816,12 +823,7 @@ def restart_function(device_name):
816823 self .prepend (path )
817824
818825 # Need to put devices back in manual mode
819- self .current_queue = queue .Queue ()
820- for devicename , tab in devices_in_use .items ():
821- if tab .mode == MODE_BUFFERED or tab .mode == MODE_TRANSITION_TO_BUFFERED :
822- tab .abort_buffered (self .current_queue )
823- # disconnect restart signal from tabs
824- inmain (tab .disconnect_restart_receiver ,restart_function )
826+ self ._abort_buffered_devices (devices_in_use , restart_function )
825827 self .set_status ("Error in queue manager\n Queue paused" )
826828
827829 # disconnect and disable abort button
@@ -916,6 +918,7 @@ def restart_function(device_name):
916918 error_condition = True
917919 logger .exception ("Error in queue manager execution. Queue paused." )
918920 self .set_status ("Error in queue manager\n Queue paused" )
921+ self ._abort_buffered_devices (devices_in_use , restart_function )
919922
920923 # Raise the error in a thread for visibility
921924 zprocess .raise_exception_in_thread (sys .exc_info ())
@@ -997,4 +1000,3 @@ def restart_function(device_name):
9971000
9981001 self .set_status ("Idle" )
9991002 logger .info ('Stopping' )
1000-
0 commit comments