|
21 | 21 | from lab.dirs import get_workspace_dir, set_organization_id as lab_set_org_id |
22 | 22 |
|
23 | 23 | from transformerlab.services import team_service |
| 24 | +from transformerlab.services.cache_service import cache |
24 | 25 |
|
25 | 26 | logger = logging.getLogger(__name__) |
26 | 27 |
|
@@ -105,6 +106,7 @@ async def _migrate_org_tasks(org_id: str) -> dict[str, Any]: |
105 | 106 | _set_org_context(org_id) |
106 | 107 | moved_tasks = 0 |
107 | 108 | skipped_tasks = 0 |
| 109 | + touched_experiment_ids: set[str] = set() |
108 | 110 |
|
109 | 111 | try: |
110 | 112 | workspace_dir = await get_workspace_dir() |
@@ -162,11 +164,26 @@ async def _migrate_org_tasks(org_id: str) -> dict[str, Any]: |
162 | 164 | await storage.copy_dir(task_dir, dest_dir) |
163 | 165 | await storage.rm_tree(task_dir) |
164 | 166 | moved_tasks += 1 |
| 167 | + touched_experiment_ids.add(str(experiment_id)) |
| 168 | + |
| 169 | + # Invalidate task list/detail cache tags for affected experiments so |
| 170 | + # clients don't wait for TTL after migration. |
| 171 | + for experiment_id in sorted(touched_experiment_ids): |
| 172 | + try: |
| 173 | + await cache.invalidate(f"tasks:{experiment_id}") |
| 174 | + except Exception as exc: # noqa: BLE001 |
| 175 | + logger.warning( |
| 176 | + "Tasks migration: org %s: cache invalidation failed for experiment %s: %s", |
| 177 | + org_id, |
| 178 | + experiment_id, |
| 179 | + exc, |
| 180 | + ) |
165 | 181 |
|
166 | 182 | return { |
167 | 183 | "org_id": org_id, |
168 | 184 | "moved_tasks": moved_tasks, |
169 | 185 | "skipped_tasks": skipped_tasks, |
| 186 | + "cache_invalidated_experiments": sorted(touched_experiment_ids), |
170 | 187 | "status": "migrated", |
171 | 188 | } |
172 | 189 | except Exception as exc: # noqa: BLE001 |
|
0 commit comments