Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 49 additions & 1 deletion backend/onyx/connectors/teams/connector.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import copy
import os
import time
from collections.abc import Iterator
from datetime import datetime
from datetime import timezone
Expand Down Expand Up @@ -492,7 +493,54 @@ def _collect_documents_for_channel(
continue

try:
replies = list(message.replies.get_all().execute_query())
MAX_RETRIES = 10
retries = 0
replies: list[ChatMessage] | None = None
cre: ClientRequestException | None = None

while True:
if retries == MAX_RETRIES:
break

try:
replies = list(message.replies.get_all().execute_query())
cre = None
break
except ClientRequestException as e:
cre = e

if not cre.response:
continue
if cre.response.status_code != 429:
continue

retry_after = int(cre.response.headers.get("Retry-After", 10))
time.sleep(retry_after)
retries += 1

if cre:
failure_message = f"Retrieval of message and its replies failed; {channel.id=} {message.id}"
if cre.response:
failure_message = f"{failure_message}; {cre.response.status_code=}"

yield ConnectorFailure(
failed_entity=EntityFailure(
entity_id=message.id,
),
failure_message=f"Retrieval of message and its replies failed; {channel.id=} {message.id}",
exception=cre,
)

if not replies:
yield ConnectorFailure(
failed_entity=EntityFailure(
entity_id=message.id,
),
failure_message=f"Retrieval of message and its replies failed; {channel.id=} {message.id}",
exception=cre,
)
continue

thread = [message]
thread.extend(replies[::-1])

Expand Down
Loading