Skip to content

Commit 0a00445

Browse files
Fix backup lock file. (#264)
* Fix backup lock file. * Fix backup lock file.
1 parent edd1235 commit 0a00445

File tree

1 file changed

+36
-15
lines changed

1 file changed

+36
-15
lines changed

src/admin.py

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
import json
2626
import logging
27+
import random
28+
import time
2729
from datetime import datetime
2830

2931
import boto3
@@ -227,27 +229,46 @@ def refresh_has_metakg():
227229
def routine(no_backup=False):
228230
logger = logging.getLogger("routine")
229231

232+
# Add jitter: random delay between 100 and 500 milliseconds (adjust range as needed)
233+
jitter_ms = random.uniform(100, 500) # Jitter in milliseconds
234+
jitter_seconds = jitter_ms / 1000 # Convert milliseconds to seconds
235+
logger.info(f"Applying jitter delay of {jitter_ms:.2f} milliseconds before acquiring lock.")
236+
time.sleep(jitter_seconds)
237+
238+
lock_acquired = False
239+
230240
try:
231241
# if previously acquired,
232242
# it won't block here
233-
_lock.acquire()
234-
logger.info("Schedule lock acquired successfully.")
243+
lock_acquired = _lock.acquire()
244+
if lock_acquired:
245+
logger.info("Schedule lock acquired successfully.")
246+
if not no_backup:
247+
logger.info("backup_to_s3()")
248+
backup_to_s3()
249+
logger.info("refresh_document()")
250+
refresh_document()
251+
logger.info("check_uptime()")
252+
check_uptime()
253+
logger.info("refresh_metakg()")
254+
refresh_metakg()
255+
logger.info("consolidate_metakg()")
256+
consolidate_metakg()
257+
logger.info("refresh_has_metakg()")
258+
refresh_has_metakg()
259+
else:
260+
logger.warning("Schedule lock acquired by another process. No need to run it in this process.")
235261
except Timeout:
236262
logger.warning("Schedule lock acquired by another process. No need to run it in this process.")
263+
except Exception as e:
264+
logger.error(f"An error occurred during the routine: {e}")
265+
if lock_acquired:
266+
_lock.release()
237267
return
238-
if not no_backup:
239-
logger.info("backup_to_s3()")
240-
backup_to_s3()
241-
logger.info("refresh_document()")
242-
refresh_document()
243-
logger.info("check_uptime()")
244-
check_uptime()
245-
logger.info("refresh_metakg()")
246-
refresh_metakg()
247-
logger.info("consolidate_metakg()")
248-
consolidate_metakg()
249-
logger.info("refresh_has_metakg()")
250-
refresh_has_metakg()
268+
finally:
269+
if lock_acquired:
270+
_lock.release()
271+
logger.info("Schedule lock released successfully.")
251272

252273

253274
if __name__ == "__main__":

0 commit comments

Comments
 (0)