@@ -917,14 +917,16 @@ def sos_handle_parameter_(key, defvalue):
917917# return True
918918
919919class SlotManager (object ):
920- def __init__ (self ):
920+ def __init__ (self , reset = False ):
921921 manager_id = env .config .get ('master_md5' , 'general' )
922922 self .lock_file = os .path .join (os .path .expanduser ('~' ), '.sos' , f'manager_{ manager_id } .lck' )
923923 self .slot_file = os .path .join (os .path .expanduser ('~' ), '.sos' , f'manager_{ manager_id } .slot' )
924+ if reset and os .path .isfile (self .slot_file ):
925+ os .remove (self .slot_file )
924926
925927 def acquire (self , num = None , max_slots = 10 , force = False ):
926928 # if num == None, request as many as possible slots
927- if not num :
929+ if num is None :
928930 num = max_slots
929931 with fasteners .InterProcessLock (self .lock_file ) as lock :
930932 if not os .path .isfile (self .slot_file ):
@@ -934,14 +936,14 @@ def acquire(self, num=None, max_slots=10, force=False):
934936 with open (self .slot_file , 'r' ) as slot :
935937 slots = int (slot .read ())
936938 except Exception as e :
937- print (e )
939+ env . logger . error (e )
938940 slots = 0
939941 # return all available slots
940942 avail = max_slots - slots
941- ret = num if force else min (num , avail )
943+ ret = num if force else max ( min (num , avail ), 0 )
942944 with open (self .slot_file , 'w' ) as slot :
943945 slot .write (str (ret + slots ))
944- env .logger .debug (f'{ ret } slots requested from { avail } avail ' )
946+ env .logger .debug (f'{ num } slots requested { ret } returned ( { slots } active, force= { force } ) ' )
945947 return ret
946948
947949 def release (self , num ):
@@ -951,7 +953,7 @@ def release(self, num):
951953 # return all available slots
952954 with open (self .slot_file , 'w' ) as slot :
953955 slot .write (str (max (0 , slots - num )))
954- env .logger .debug (f'{ num } slots released' )
956+ env .logger .debug (f'{ num } slots released from { slots } active, { slots - num } remain ' )
955957 return max (0 , slots - num )
956958
957959
0 commit comments