operator: adjust state transition rules to ensure 'running' state always accounted for in db (#1989)
don't rely on current status, always set state to running when running to ensure idempotency in case of multiple calls
This commit is contained in:
parent
1c153dfd3c
commit
4a2725aaa6
@ -807,27 +807,25 @@ class CrawlOperator(BaseOperator):
|
||||
status.resync_after = self.fast_retry_secs
|
||||
return status
|
||||
|
||||
# set state to running (if not already)
|
||||
if status.state not in RUNNING_STATES:
|
||||
# if true (state is set), also run webhook
|
||||
if await self.set_state(
|
||||
"running",
|
||||
status,
|
||||
crawl,
|
||||
allowed_from=["starting", "waiting_capacity"],
|
||||
):
|
||||
if not crawl.qa_source_crawl_id:
|
||||
self.run_task(
|
||||
self.event_webhook_ops.create_crawl_started_notification(
|
||||
crawl.id, crawl.oid, scheduled=crawl.scheduled
|
||||
)
|
||||
# if true (state is set), also run webhook
|
||||
if await self.set_state(
|
||||
"running",
|
||||
status,
|
||||
crawl,
|
||||
allowed_from=["starting", "waiting_capacity"],
|
||||
):
|
||||
if not crawl.qa_source_crawl_id:
|
||||
self.run_task(
|
||||
self.event_webhook_ops.create_crawl_started_notification(
|
||||
crawl.id, crawl.oid, scheduled=crawl.scheduled
|
||||
)
|
||||
else:
|
||||
self.run_task(
|
||||
self.event_webhook_ops.create_qa_analysis_started_notification(
|
||||
crawl.id, crawl.oid, crawl.qa_source_crawl_id
|
||||
)
|
||||
)
|
||||
else:
|
||||
self.run_task(
|
||||
self.event_webhook_ops.create_qa_analysis_started_notification(
|
||||
crawl.id, crawl.oid, crawl.qa_source_crawl_id
|
||||
)
|
||||
)
|
||||
|
||||
# update lastActiveTime if crawler is running
|
||||
if crawler_running:
|
||||
|
Loading…
Reference in New Issue
Block a user