Better error for missing allowed_users / allowed_groups

This commit is contained in:
Weves 2023-08-17 14:08:24 -07:00 committed by Chris Weaver
parent bf4b63de19
commit 70d7ca5c73
2 changed files with 37 additions and 7 deletions

View File

@ -1,5 +1,6 @@
import json import json
from functools import partial from functools import partial
from typing import cast
from uuid import UUID from uuid import UUID
from qdrant_client import QdrantClient from qdrant_client import QdrantClient
@ -68,9 +69,26 @@ def get_qdrant_document_cross_connector_metadata(
if len(results) == 0: if len(results) == 0:
return None return None
payload = get_payload_from_record(results[0]) payload = get_payload_from_record(results[0])
allowed_users = cast(list[str] | None, payload.get(ALLOWED_USERS))
allowed_groups = cast(list[str] | None, payload.get(ALLOWED_GROUPS))
if allowed_users is None:
allowed_users = []
logger.error(
"Qdrant Index is corrupted, Document found with no user access lists."
f"Assuming no users have access to chunk with ID '{doc_chunk_id}'."
)
if allowed_groups is None:
allowed_groups = []
logger.error(
"Qdrant Index is corrupted, Document found with no groups access lists."
f"Assuming no groups have access to chunk with ID '{doc_chunk_id}'."
)
return CrossConnectorDocumentMetadata( return CrossConnectorDocumentMetadata(
allowed_users=payload[ALLOWED_USERS], # if either `allowed_users` or `allowed_groups` are missing from the
allowed_user_groups=payload[ALLOWED_GROUPS], # point, then assume that the document has no allowed users.
allowed_users=allowed_users,
allowed_user_groups=allowed_groups,
already_in_index=True, already_in_index=True,
) )

View File

@ -92,13 +92,25 @@ def get_typesense_document_cross_connector_metadata(
) )
except ObjectNotFound: except ObjectNotFound:
return None return None
if document[ALLOWED_USERS] is None or document[ALLOWED_GROUPS] is None:
raise RuntimeError( allowed_users = cast(list[str] | None, document.get(ALLOWED_USERS))
"Typesense Index is corrupted, Document found with no access lists." allowed_groups = cast(list[str] | None, document.get(ALLOWED_GROUPS))
if allowed_users is None:
allowed_users = []
logger.error(
"Typesense Index is corrupted, Document found with no user access lists."
f"Assuming no users have access to chunk with ID '{doc_chunk_id}'."
) )
if allowed_groups is None:
allowed_groups = []
logger.error(
"Typesense Index is corrupted, Document found with no groups access lists."
f"Assuming no groups have access to chunk with ID '{doc_chunk_id}'."
)
return CrossConnectorDocumentMetadata( return CrossConnectorDocumentMetadata(
allowed_users=document[ALLOWED_USERS], allowed_users=allowed_users,
allowed_user_groups=document[ALLOWED_GROUPS], allowed_user_groups=allowed_groups,
already_in_index=True, already_in_index=True,
) )