refactor(api): replace AutoRenewRedisLock with DbMigrationAutoRenewLock

- Updated the database migration locking mechanism to use DbMigrationAutoRenewLock for improved clarity and functionality.
- Removed the AutoRenewRedisLock implementation and its associated tests.
- Adjusted integration and unit tests to reflect the new locking class and its usage in the upgrade_db command.

(cherry picked from commit c812ad9ff26bed3eb59862bd7a5179b7ee83f11f)
This commit is contained in:
L1nSn0w
2026-02-14 12:11:52 +08:00
parent 94603b5408
commit 5ccbc00eb9
4 changed files with 27 additions and 29 deletions

View File

@@ -1,5 +1,5 @@
"""
Integration tests for AutoRenewRedisLock using real Redis via TestContainers.
Integration tests for DbMigrationAutoRenewLock using real Redis via TestContainers.
"""
import time
@@ -8,20 +8,20 @@ import uuid
import pytest
from extensions.ext_redis import redis_client
from libs.auto_renew_redis_lock import AutoRenewRedisLock
from libs.db_migration_lock import DbMigrationAutoRenewLock
@pytest.mark.usefixtures("flask_app_with_containers")
def test_auto_renew_redis_lock_renews_ttl_and_releases():
lock_name = f"test:auto_renew_lock:{uuid.uuid4().hex}"
def test_db_migration_lock_renews_ttl_and_releases():
lock_name = f"test:db_migration_auto_renew_lock:{uuid.uuid4().hex}"
# Keep base TTL very small, and renew frequently so the test is stable even on slower CI.
lock = AutoRenewRedisLock(
lock = DbMigrationAutoRenewLock(
redis_client=redis_client,
name=lock_name,
ttl_seconds=1.0,
renew_interval_seconds=0.2,
log_context="test_auto_renew_redis_lock",
log_context="test_db_migration_lock",
)
acquired = lock.acquire(blocking=True, blocking_timeout=5)

View File

@@ -4,7 +4,7 @@ import types
from unittest.mock import MagicMock
import commands
from libs.auto_renew_redis_lock import LockNotOwnedError, RedisError
from libs.db_migration_lock import LockNotOwnedError, RedisError
HEARTBEAT_WAIT_TIMEOUT_SECONDS = 5.0