Skip to content

Commit

Permalink
operator: adjust state transition rules to ensure 'running' state alw…
Browse files Browse the repository at this point in the history
…ays 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
  • Loading branch information
ikreymer authored Aug 5, 2024
1 parent 1c153df commit 4a2725a
Showing 1 changed file with 17 additions and 19 deletions.
36 changes: 17 additions & 19 deletions backend/btrixcloud/operator/crawls.py
Original file line number Diff line number Diff line change
Expand Up @@ -807,27 +807,25 @@ async def sync_crawl_state(
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:
Expand Down

0 comments on commit 4a2725a

Please sign in to comment.