From 762c26782115448768f5dd8117ff7e3dbfa5993d Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Fri, 4 Oct 2024 11:49:41 -0700 Subject: [PATCH 1/3] Frontend Manager: avoid redundant gh calls for static versions --- app/frontend_management.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/app/frontend_management.py b/app/frontend_management.py index 9c832e46d0df..54d086ae6713 100644 --- a/app/frontend_management.py +++ b/app/frontend_management.py @@ -151,6 +151,15 @@ def init_frontend_unsafe(cls, version_string: str, provider: Optional[FrontEndPr return cls.DEFAULT_FRONTEND_PATH repo_owner, repo_name, version = cls.parse_version_string(version_string) + + if version.startswith("v"): + expected_path = str(Path(cls.CUSTOM_FRONTENDS_ROOT) / f"{repo_owner}_{repo_name}" / version.lstrip("v")) + if os.path.exists(expected_path): + logging.info(f"Using existing copy of specific frontend version tag: {repo_owner}/{repo_name}@{version}") + return expected_path + + logging.info(f"Initializing frontend: {repo_owner}/{repo_name}@{version}, requesting version details from GitHub...") + provider = provider or FrontEndProvider(repo_owner, repo_name) release = provider.get_release(version) @@ -159,16 +168,21 @@ def init_frontend_unsafe(cls, version_string: str, provider: Optional[FrontEndPr Path(cls.CUSTOM_FRONTENDS_ROOT) / provider.folder_name / semantic_version ) if not os.path.exists(web_root): + tmp_path = web_root + ".tmp" + if os.path.exists(tmp_path): + os.rmdir(tmp_path) try: - os.makedirs(web_root, exist_ok=True) + os.makedirs(tmp_path, exist_ok=True) logging.info( "Downloading frontend(%s) version(%s) to (%s)", provider.folder_name, semantic_version, - web_root, + tmp_path, ) logging.debug(release) - download_release_asset_zip(release, destination_path=web_root) + download_release_asset_zip(release, destination_path=tmp_path) + if os.listdir(tmp_path): + os.rename(tmp_path, web_root) finally: # Clean up the directory if it is empty, i.e. the download failed if not os.listdir(web_root): From c942b6c9355dac7c576b3792ec9330caa3495fb8 Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Fri, 4 Oct 2024 11:57:40 -0700 Subject: [PATCH 2/3] actually, removing old tmpdir isn't needed I tested - downloader code handles this case well already (also rmdir was wrong func anyway, needed shutil.rmtree if it had content) --- app/frontend_management.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/frontend_management.py b/app/frontend_management.py index 54d086ae6713..b6d3a62f7ea5 100644 --- a/app/frontend_management.py +++ b/app/frontend_management.py @@ -169,8 +169,6 @@ def init_frontend_unsafe(cls, version_string: str, provider: Optional[FrontEndPr ) if not os.path.exists(web_root): tmp_path = web_root + ".tmp" - if os.path.exists(tmp_path): - os.rmdir(tmp_path) try: os.makedirs(tmp_path, exist_ok=True) logging.info( From 8b69f86e000befff6ef41d80dbe6273ff0744d49 Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Fri, 4 Oct 2024 22:05:14 -0700 Subject: [PATCH 3/3] add code comment --- app/frontend_management.py | 1 + 1 file changed, 1 insertion(+) diff --git a/app/frontend_management.py b/app/frontend_management.py index b6d3a62f7ea5..191408aca97c 100644 --- a/app/frontend_management.py +++ b/app/frontend_management.py @@ -168,6 +168,7 @@ def init_frontend_unsafe(cls, version_string: str, provider: Optional[FrontEndPr Path(cls.CUSTOM_FRONTENDS_ROOT) / provider.folder_name / semantic_version ) if not os.path.exists(web_root): + # Use tmp path until complete to avoid path exists check passing from interrupted downloads tmp_path = web_root + ".tmp" try: os.makedirs(tmp_path, exist_ok=True)