Fix race condition with archived channels (#4635)

This commit is contained in:
Chris Weaver 2025-04-29 16:35:40 -07:00 committed by GitHub
parent 47767c1666
commit dd242c9926
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 20 additions and 9 deletions

View File

@ -27,7 +27,7 @@ def _resolve(
model_names: list[str] | None,
display_model_names: list[str] | None,
default_model_name: str,
fast_default_model_name: str,
fast_default_model_name: str | None,
) -> set[tuple[str, bool]]:
models = set(model_names) if model_names else None
display_models = set(display_model_names) if display_model_names else None
@ -94,9 +94,11 @@ def _resolve(
# It is possible that `default_model_name` is not in `models` and is not in `display_models`.
# It is also possible that `fast_default_model_name` is not in `models` and is not in `display_models`.
models.add(default_model_name)
models.add(fast_default_model_name)
if fast_default_model_name:
models.add(fast_default_model_name)
display_models.add(default_model_name)
display_models.add(fast_default_model_name)
if fast_default_model_name:
display_models.add(fast_default_model_name)
return set([(model, model in display_models) for model in models])

View File

@ -330,11 +330,19 @@ def _get_messages(
# have to be in the channel in order to read messages
if not channel["is_member"]:
make_slack_api_call_w_retries(
client.conversations_join,
channel=channel["id"],
is_private=channel["is_private"],
)
try:
make_slack_api_call_w_retries(
client.conversations_join,
channel=channel["id"],
is_private=channel["is_private"],
)
except SlackApiError as e:
if e.response["error"] == "is_archived":
logger.warning(f"Channel {channel['name']} is archived. Skipping.")
return [], False
logger.exception(f"Error joining channel {channel['name']}")
raise
logger.info(f"Successfully joined '{channel['name']}'")
response = make_slack_api_call_w_retries(

View File

@ -16,7 +16,8 @@ from onyx.utils.retry_wrapper import retry_builder
logger = setup_logger()
basic_retry_wrapper = retry_builder()
# retry after 0.1, 1.2, 3.4, 7.8, 16.6, 34.2 seconds
basic_retry_wrapper = retry_builder(tries=7)
# number of messages we request per page when fetching paginated slack messages
_SLACK_LIMIT = 900