From b20ae6543bd931d884e594aceb549b756ff91dbf Mon Sep 17 00:00:00 2001 From: Dulifu0 Date: Tue, 3 Feb 2026 20:02:52 +0800 Subject: [PATCH] Fix(git_fetcher): cleanup repo dir on clone failure & unpin pygit2 --- packages/opal-server/opal_server/git_fetcher.py | 4 ++++ packages/opal-server/requires.txt | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opal-server/opal_server/git_fetcher.py b/packages/opal-server/opal_server/git_fetcher.py index 67e1016e9..020ec26b8 100644 --- a/packages/opal-server/opal_server/git_fetcher.py +++ b/packages/opal-server/opal_server/git_fetcher.py @@ -230,6 +230,10 @@ async def _clone(self): ) except pygit2.GitError: logger.exception(f"Could not clone repo at {self._source.url}") + # Fix: Cleanup failed clone directly to prevent "directory not empty" or symlink leftovers + if self._repo_path.exists(): + logger.warning(f"Cleaning up failed clone directory: {self._repo_path}") + shutil.rmtree(self._repo_path) else: logger.info(f"Clone completed: {self._source.url}") await self._notify_on_changes(repo) diff --git a/packages/opal-server/requires.txt b/packages/opal-server/requires.txt index d5adaf2fd..3d3bb35da 100644 --- a/packages/opal-server/requires.txt +++ b/packages/opal-server/requires.txt @@ -4,6 +4,6 @@ gitpython>=3.1.32,<4 pyjwt[crypto]>=2.1.0,<3 slowapi>=0.1.5,<1 # slowapi is stuck on and old `redis`, so fix that and switch from aioredis to redis -pygit2>=1.14.1,<1.15 +pygit2>=1.14.1 asgiref>=3.5.2,<4 redis>=4.3.4,<5