|
7 | 7 | import sys |
8 | 8 | import threading |
9 | 9 | import time |
10 | | -import uuid |
11 | 10 | from concurrent.futures import ThreadPoolExecutor |
12 | 11 | from logging import Logger |
13 | 12 | from typing import ( |
|
33 | 32 | from dbos._debouncer import debouncer_workflow |
34 | 33 | from dbos._serialization import DefaultSerializer, Serializer |
35 | 34 | from dbos._sys_db import SystemDatabase, WorkflowStatus |
36 | | -from dbos._utils import INTERNAL_QUEUE_NAME, GlobalParams |
| 35 | +from dbos._utils import INTERNAL_QUEUE_NAME, GlobalParams, generate_uuid |
37 | 36 | from dbos._workflow_commands import fork_workflow, list_queued_workflows, list_workflows |
38 | 37 |
|
39 | 38 | from ._classproperty import classproperty |
@@ -444,7 +443,7 @@ def _launch(self, *, debug_mode: bool = False) -> None: |
444 | 443 | if GlobalParams.app_version == "": |
445 | 444 | GlobalParams.app_version = self._registry.compute_app_version() |
446 | 445 | if self.conductor_key is not None: |
447 | | - GlobalParams.executor_id = str(uuid.uuid4()) |
| 446 | + GlobalParams.executor_id = generate_uuid() |
448 | 447 | dbos_logger.info(f"Executor ID: {GlobalParams.executor_id}") |
449 | 448 | dbos_logger.info(f"Application version: {GlobalParams.app_version}") |
450 | 449 | self._executor_field = ThreadPoolExecutor(max_workers=sys.maxsize) |
@@ -496,20 +495,21 @@ def _launch(self, *, debug_mode: bool = False) -> None: |
496 | 495 | except Exception as e: |
497 | 496 | dbos_logger.warning(f"Failed to start admin server: {e}") |
498 | 497 |
|
499 | | - dbos_logger.debug("Retrieving local pending workflows for recovery") |
500 | | - workflow_ids = self._sys_db.get_pending_workflows( |
501 | | - GlobalParams.executor_id, GlobalParams.app_version |
502 | | - ) |
503 | | - if (len(workflow_ids)) > 0: |
504 | | - self.logger.info( |
505 | | - f"Recovering {len(workflow_ids)} workflows from application version {GlobalParams.app_version}" |
506 | | - ) |
507 | | - else: |
508 | | - self.logger.info( |
509 | | - f"No workflows to recover from application version {GlobalParams.app_version}" |
| 498 | + # Recover local workflows if not using a recovery service |
| 499 | + if not self.conductor_key and not GlobalParams.dbos_cloud: |
| 500 | + dbos_logger.debug("Retrieving local pending workflows for recovery") |
| 501 | + workflow_ids = self._sys_db.get_pending_workflows( |
| 502 | + GlobalParams.executor_id, GlobalParams.app_version |
510 | 503 | ) |
511 | | - |
512 | | - self._executor.submit(startup_recovery_thread, self, workflow_ids) |
| 504 | + if (len(workflow_ids)) > 0: |
| 505 | + self.logger.info( |
| 506 | + f"Recovering {len(workflow_ids)} workflows from application version {GlobalParams.app_version}" |
| 507 | + ) |
| 508 | + else: |
| 509 | + self.logger.info( |
| 510 | + f"No workflows to recover from application version {GlobalParams.app_version}" |
| 511 | + ) |
| 512 | + self._executor.submit(startup_recovery_thread, self, workflow_ids) |
513 | 513 |
|
514 | 514 | # Listen to notifications |
515 | 515 | dbos_logger.debug("Starting notifications listener thread") |
|
0 commit comments