@@ -203,8 +203,9 @@ def update_check(self, process_name, config, key, instance_name):
203203 )
204204 if process_name in self .process_handler .process_names :
205205 self .stop_process (process_name )
206- if process_name in self .process_handler .setup_tracker :
207- self .process_handler .setup_tracker .remove (process_name )
206+ with self .process_handler .setup_tracker_lock :
207+ if process_name in self .process_handler .setup_tracker :
208+ self .process_handler .setup_tracker .remove (process_name )
208209 release_version = f"{ update_info .get ('latest_version' )} "
209210 if not prerelease and not nightly :
210211 config ["release_version" ] = release_version
@@ -256,8 +257,9 @@ def update_check_pinned_version(
256257 )
257258 if process_name in self .process_handler .process_names :
258259 self .stop_process (process_name )
259- if process_name in self .process_handler .setup_tracker :
260- self .process_handler .setup_tracker .remove (process_name )
260+ with self .process_handler .setup_tracker_lock :
261+ if process_name in self .process_handler .setup_tracker :
262+ self .process_handler .setup_tracker .remove (process_name )
261263
262264 success , error = setup_project (self .process_handler , process_name )
263265 if not success :
@@ -295,8 +297,9 @@ def update_check_jellyfin_latest(self, process_name, config, key, instance_name)
295297 )
296298 if process_name in self .process_handler .process_names :
297299 self .stop_process (process_name )
298- if process_name in self .process_handler .setup_tracker :
299- self .process_handler .setup_tracker .remove (process_name )
300+ with self .process_handler .setup_tracker_lock :
301+ if process_name in self .process_handler .setup_tracker :
302+ self .process_handler .setup_tracker .remove (process_name )
300303
301304 installer = JellyfinInstaller ()
302305 success , error = installer .install_jellyfin_server ()
@@ -335,8 +338,9 @@ def update_check_emby_latest(self, process_name, config, key, instance_name):
335338 )
336339 if process_name in self .process_handler .process_names :
337340 self .stop_process (process_name )
338- if process_name in self .process_handler .setup_tracker :
339- self .process_handler .setup_tracker .remove (process_name )
341+ with self .process_handler .setup_tracker_lock :
342+ if process_name in self .process_handler .setup_tracker :
343+ self .process_handler .setup_tracker .remove (process_name )
340344
341345 original_release_enabled = config .get ("release_version_enabled" )
342346 original_release_version = config .get ("release_version" )
@@ -376,8 +380,9 @@ def update_check_arr_latest(self, process_name, config, key, instance_name):
376380 )
377381 if process_name in self .process_handler .process_names :
378382 self .stop_process (process_name )
379- if process_name in self .process_handler .setup_tracker :
380- self .process_handler .setup_tracker .remove (process_name )
383+ with self .process_handler .setup_tracker_lock :
384+ if process_name in self .process_handler .setup_tracker :
385+ self .process_handler .setup_tracker .remove (process_name )
381386
382387 success , error = installer .install ()
383388 if not success :
@@ -479,8 +484,9 @@ def update_check_plex(self, process_name, config, key, instance_name):
479484 )
480485 if process_name in self .process_handler .process_names :
481486 self .stop_process (process_name )
482- if process_name in self .process_handler .setup_tracker :
483- self .process_handler .setup_tracker .remove (process_name )
487+ with self .process_handler .setup_tracker_lock :
488+ if process_name in self .process_handler .setup_tracker :
489+ self .process_handler .setup_tracker .remove (process_name )
484490
485491 success , error = installer .install_plex_media_server ()
486492 if not success :
@@ -512,6 +518,7 @@ def start_process(self, process_name, config, key, instance_name):
512518 instance_name = refreshed_instance
513519
514520 if config .get ("wait_for_dir" , False ):
521+ sleep_s = 10
515522 while not os .path .exists (wait_dir := config ["wait_for_dir" ]):
516523 if self .process_handler .shutting_down :
517524 self .logger .info (
@@ -522,10 +529,12 @@ def start_process(self, process_name, config, key, instance_name):
522529 self .logger .info (
523530 f"Waiting for directory { wait_dir } to become available before starting { process_name } "
524531 )
525- time .sleep (10 )
532+ time .sleep (sleep_s )
533+ sleep_s = min (60 , int (sleep_s * 1.5 ))
526534
527535 wait_mounts = config .get ("wait_for_mounts" ) or []
528536 if wait_mounts :
537+ sleep_s = 10
529538 while True :
530539 if self .process_handler .shutting_down :
531540 self .logger .info (
@@ -545,7 +554,8 @@ def start_process(self, process_name, config, key, instance_name):
545554 process_name ,
546555 ", " .join (missing ),
547556 )
548- time .sleep (10 )
557+ time .sleep (sleep_s )
558+ sleep_s = min (60 , int (sleep_s * 1.5 ))
549559
550560 if config .get ("wait_for_url" , False ):
551561 wait_for_urls = config ["wait_for_url" ]
@@ -560,6 +570,7 @@ def start_process(self, process_name, config, key, instance_name):
560570 f"Waiting to start { process_name } until { wait_url } is accessible."
561571 )
562572
573+ sleep_s = 5
563574 while time .time () - start_time < 600 :
564575 if self .process_handler .shutting_down :
565576 self .logger .info (
@@ -589,7 +600,8 @@ def start_process(self, process_name, config, key, instance_name):
589600 )
590601 except requests .RequestException as e :
591602 logger .debug (f"Waiting for { wait_url } : { e } " )
592- time .sleep (5 )
603+ time .sleep (sleep_s )
604+ sleep_s = min (60 , int (sleep_s * 1.5 ))
593605 else :
594606 raise RuntimeError (
595607 f"Timeout: { wait_url } is not accessible after 600 seconds."
0 commit comments