From b84bf78974edae263c42217128d4752222784f3f Mon Sep 17 00:00:00 2001 From: Simon Date: Fri, 22 Dec 2023 09:34:46 +0700 Subject: [PATCH] hotfix: clear faulty version check --- .../config/management/commands/ta_startup.py | 5 ++++ tubearchivist/home/src/ta/config.py | 25 ++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/tubearchivist/config/management/commands/ta_startup.py b/tubearchivist/config/management/commands/ta_startup.py index a4e1169..b387fb4 100644 --- a/tubearchivist/config/management/commands/ta_startup.py +++ b/tubearchivist/config/management/commands/ta_startup.py @@ -39,6 +39,7 @@ class Command(BaseCommand): self._clear_redis_keys() self._clear_tasks() self._clear_dl_cache() + self._mig_clear_failed_versioncheck() self._version_check() self._mig_index_setup() self._mig_snapshot_check() @@ -148,6 +149,10 @@ class Command(BaseCommand): self.stdout.write("[MIGRATION] setup snapshots") ElasticSnapshot().setup() + def _mig_clear_failed_versioncheck(self): + """hotfix for v0.4.5, clearing faulty versioncheck""" + ReleaseVersion().clear_fail() + def _mig_move_users_to_es(self): # noqa: C901 """migration: update from 0.4.1 to 0.4.2 move user config to ES""" self.stdout.write("[MIGRATION] move user configuration to ES") diff --git a/tubearchivist/home/src/ta/config.py b/tubearchivist/home/src/ta/config.py index 365de3b..61338f8 100644 --- a/tubearchivist/home/src/ta/config.py +++ b/tubearchivist/home/src/ta/config.py @@ -270,7 +270,7 @@ class ReleaseVersion: NEW_KEY = "versioncheck:new" def __init__(self): - self.local_version = self._parse_version(settings.TA_VERSION) + self.local_version = settings.TA_VERSION self.is_unstable = settings.TA_VERSION.endswith("-unstable") self.remote_version = False self.is_breaking = False @@ -298,16 +298,17 @@ class ReleaseVersion: """read version from remote""" sleep(randint(0, 60)) self.response = requests.get(self.REMOTE_URL, timeout=20).json() - remote_version_str = self.response["release_version"] - self.remote_version = self._parse_version(remote_version_str) + self.remote_version = self.response["release_version"] self.is_breaking = self.response["breaking_changes"] def _has_update(self): """check if there is an update""" - if self.remote_version > self.local_version: + remote_parsed = self._parse_version(self.remote_version) + local_parsed = self._parse_version(self.local_version) + if remote_parsed > local_parsed: return self.remote_version - if self.is_unstable and self.local_version == self.remote_version: + if self.is_unstable and local_parsed == remote_parsed: return self.remote_version return False @@ -324,7 +325,10 @@ class ReleaseVersion: if not message: return False - if self.local_version >= self._parse_version(message.get("version")): + local_parsed = self._parse_version(self.local_version) + message_parsed = self._parse_version(message.get("version")) + + if local_parsed >= message_parsed: RedisArchivist().del_message(self.NEW_KEY) return settings.TA_VERSION @@ -337,3 +341,12 @@ class ReleaseVersion: return False return message + + def clear_fail(self): + """clear key, catch previous error in v0.4.5""" + message = self.get_update() + if not message: + return + + if isinstance(message.get("version"), list): + RedisArchivist().del_message(self.NEW_KEY)