Add admin sync hot reload path
This commit is contained in:
parent
6f68f8f9ec
commit
3e93567a53
9 changed files with 676 additions and 72 deletions
|
|
@ -46,8 +46,7 @@ from activity_core.activities import (
|
|||
)
|
||||
from activity_core.db import make_engine
|
||||
from sqlalchemy.ext.asyncio import async_sessionmaker
|
||||
from activity_core.sync_activity_definitions import sync as sync_activity_defs
|
||||
from activity_core.sync_schedules import sync as sync_schedules
|
||||
from activity_core.sync_service import run_sync
|
||||
from activity_core.workflows import RunActivityWorkflow, TaskExecutorWorkflow
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
|
@ -77,20 +76,26 @@ async def run() -> None:
|
|||
TEMPORAL_HOST, namespace=TEMPORAL_NAMESPACE, runtime=runtime
|
||||
)
|
||||
|
||||
# T45: Sync ActivityDefinition files into DB before schedule sync.
|
||||
logger.info("Syncing ActivityDefinition files...")
|
||||
logger.info("Syncing ActivityDefinitions and Temporal Schedules...")
|
||||
sync_engine = make_engine(db_url)
|
||||
session_factory = async_sessionmaker(sync_engine, expire_on_commit=False)
|
||||
try:
|
||||
session_factory = async_sessionmaker(make_engine(db_url), expire_on_commit=False)
|
||||
await sync_activity_defs(session_factory)
|
||||
except Exception:
|
||||
logger.exception("activity definition sync failed — continuing worker startup")
|
||||
|
||||
# T23: Sync Temporal Schedules with the DB before workers start accepting tasks.
|
||||
logger.info("Syncing Temporal Schedules with ActivityDefinition DB...")
|
||||
try:
|
||||
await sync_schedules(client, db_url)
|
||||
except Exception:
|
||||
logger.exception("schedule sync failed — continuing worker startup")
|
||||
sync_result = await run_sync(
|
||||
session_factory=session_factory,
|
||||
temporal_client=client,
|
||||
definitions=True,
|
||||
schedules=True,
|
||||
event_types=False,
|
||||
)
|
||||
for error in sync_result["errors"]:
|
||||
logger.error(
|
||||
"startup sync %s failed — %s: %s",
|
||||
error["stage"],
|
||||
error["type"],
|
||||
error["message"],
|
||||
)
|
||||
finally:
|
||||
await sync_engine.dispose()
|
||||
|
||||
orchestrator_worker = Worker(
|
||||
client,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue