add a 'stopped_org_readonly' state for crawls that are running while org is made read-only (#1977)

an org is made read-only while crawls are running:
- treat similar to other stopped_* states, do a graceful stop
- update UI to display "Stopped: Crawling Disabled" for this status
- don't add corresponding skipped status - just skip running crawls if org is read-only
This commit is contained in:
Ilya Kreymer 2024-07-29 12:24:40 -07:00 committed by GitHub
parent 96691a33fa
commit e9aeff1836
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 20 additions and 1 deletions

View File

@ -224,6 +224,7 @@ TYPE_SUCCESSFUL_STATES = Literal[
"stopped_by_user",
"stopped_storage_quota_reached",
"stopped_time_quota_reached",
"stopped_org_readonly",
]
SUCCESSFUL_STATES = get_args(TYPE_SUCCESSFUL_STATES)

View File

@ -1242,6 +1242,9 @@ class CrawlOperator(BaseOperator):
# gracefully stop crawl if current running crawl sizes reach storage quota
org = await self.org_ops.get_org_by_id(crawl.oid)
if org.readOnly:
return "stopped_org_readonly"
if org.quotas.storageQuota:
running_crawls_total_size = status.size
for crawl_job in data.related[CJS].values():
@ -1366,6 +1369,8 @@ class CrawlOperator(BaseOperator):
state = "stopped_storage_quota_reached"
elif status.stopReason == "stopped_time_quota_reached":
state = "stopped_time_quota_reached"
elif status.stopReason == "stopped_org_readonly":
state = "stopped_org_readonly"
else:
state = "complete"

View File

@ -21,6 +21,7 @@ StopReason = Literal[
"size-limit",
"stopped_storage_quota_reached",
"stopped_time_quota_reached",
"stopped_org_readonly",
]

View File

@ -228,6 +228,16 @@ export class CrawlStatus extends TailwindElement {
label = msg("Stopped: Time Quota Reached");
break;
case "stopped_org_readonly":
color = "var(--warning)";
icon = html`<sl-icon
name="exclamation-square-fill"
slot="prefix"
style="color: ${color}"
></sl-icon>`;
label = msg("Stopped: Crawling Disabled");
break;
case "canceled":
color = "var(--sl-color-orange-600)";
icon = html`<sl-icon

View File

@ -139,7 +139,8 @@ export type CrawlState =
| "canceled"
| "stopped_by_user"
| "stopped_storage_quota_reached"
| "stopped_time_quota_reached";
| "stopped_time_quota_reached"
| "stopped_org_readonly";
// TODO maybe convert this to an enum?
export enum ReviewStatus {

View File

@ -21,6 +21,7 @@ export const finishedCrawlStates: CrawlState[] = [
"stopped_by_user",
"stopped_storage_quota_reached",
"stopped_time_quota_reached",
"stopped_org_readonly",
];
export const inactiveCrawlStates: CrawlState[] = [