refactor: centralize progress ID generation

This commit is contained in:
Dariusz L
2026-08-08 22:33:41 +02:00
parent e0d5dff0a0
commit 551dae9df7
4 changed files with 19 additions and 6 deletions
+6
View File
@@ -2,6 +2,7 @@
import threading
import time
import uuid
from typing import Any, Callable, Dict, Optional
from .log_system import create_module_logger
@@ -9,6 +10,11 @@ from .log_system import create_module_logger
log = create_module_logger(__name__)
def generate_progress_id(prefix: str) -> str:
"""Generate an opaque progress ID with a stable caller-provided prefix."""
return f"{prefix}_{uuid.uuid4().hex}"
class JobProgressTracker:
"""Helper class for thread-safe job progress tracking and cancellation management."""
+2 -2
View File
@@ -2,10 +2,10 @@
import os
import time
import uuid
from .. import path_utils
from ..local_hash_matches import collect_local_hash_matches_for_result
from ..progress import generate_progress_id
from ..request_utils import extract_request_sha256, validate_workflow_payload
from ..routes.context import RouteContext
@@ -608,7 +608,7 @@ class HashService:
return error_response
self.hash_tracker.cleanup()
progress_id = f"hash_{uuid.uuid4().hex}"
progress_id = generate_progress_id("hash")
self.hash_tracker.update(
progress_id,
status="queued",
+2 -3
View File
@@ -1,7 +1,6 @@
"""Metadata audit and build orchestration used by HTTP route adapters."""
import uuid
from ..progress import generate_progress_id
from ..request_utils import read_optional_object_payload
from ..routes.context import RouteContext
@@ -64,7 +63,7 @@ class MetadataService:
payload.get("metadata_mode")
)
self.metadata_builder_progress.cleanup()
progress_id = f"metadata_build_{uuid.uuid4().hex}"
progress_id = generate_progress_id("metadata_build")
self.metadata_builder_progress.update(
progress_id,
status="queued",
+9 -1
View File
@@ -29,11 +29,19 @@ from core.settings import (
_resolve_base_model_mapping,
)
from core.progress import JobProgressTracker
from core.progress import JobProgressTracker, generate_progress_id
class ModelResolverRobustnessTests(unittest.TestCase):
def test_progress_id_generation_preserves_prefix_and_uuid_shape(self):
metadata_id = generate_progress_id("metadata_build")
hash_id = generate_progress_id("hash")
self.assertRegex(metadata_id, r"^metadata_build_[0-9a-f]{32}$")
self.assertRegex(hash_id, r"^hash_[0-9a-f]{32}$")
self.assertNotEqual(metadata_id, hash_id)
def test_download_match_paths_use_a_normalized_absolute_comparison_key(self):
raw_path = " models{}..{}checkpoints{}model.safetensors ".format(
os.sep,