mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-07-01 02:00:48 +02:00
Fix race condition with archived channels (#4635)
This commit is contained in:
@ -27,7 +27,7 @@ def _resolve(
|
|||||||
model_names: list[str] | None,
|
model_names: list[str] | None,
|
||||||
display_model_names: list[str] | None,
|
display_model_names: list[str] | None,
|
||||||
default_model_name: str,
|
default_model_name: str,
|
||||||
fast_default_model_name: str,
|
fast_default_model_name: str | None,
|
||||||
) -> set[tuple[str, bool]]:
|
) -> set[tuple[str, bool]]:
|
||||||
models = set(model_names) if model_names else None
|
models = set(model_names) if model_names else None
|
||||||
display_models = set(display_model_names) if display_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 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`.
|
# 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(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(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])
|
return set([(model, model in display_models) for model in models])
|
||||||
|
|
||||||
|
@ -330,11 +330,19 @@ def _get_messages(
|
|||||||
|
|
||||||
# have to be in the channel in order to read messages
|
# have to be in the channel in order to read messages
|
||||||
if not channel["is_member"]:
|
if not channel["is_member"]:
|
||||||
make_slack_api_call_w_retries(
|
try:
|
||||||
client.conversations_join,
|
make_slack_api_call_w_retries(
|
||||||
channel=channel["id"],
|
client.conversations_join,
|
||||||
is_private=channel["is_private"],
|
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']}'")
|
logger.info(f"Successfully joined '{channel['name']}'")
|
||||||
|
|
||||||
response = make_slack_api_call_w_retries(
|
response = make_slack_api_call_w_retries(
|
||||||
|
@ -16,7 +16,8 @@ from onyx.utils.retry_wrapper import retry_builder
|
|||||||
|
|
||||||
logger = setup_logger()
|
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
|
# number of messages we request per page when fetching paginated slack messages
|
||||||
_SLACK_LIMIT = 900
|
_SLACK_LIMIT = 900
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user