mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-20 13:01:34 +02:00
Handle bad slack configurations– multi tenant (#4118)
* k * quick nit * k * k
This commit is contained in:
parent
6ce810e957
commit
98bfb58147
@ -17,10 +17,12 @@ from prometheus_client import Gauge
|
|||||||
from prometheus_client import start_http_server
|
from prometheus_client import start_http_server
|
||||||
from redis.lock import Lock
|
from redis.lock import Lock
|
||||||
from slack_sdk import WebClient
|
from slack_sdk import WebClient
|
||||||
|
from slack_sdk.errors import SlackApiError
|
||||||
from slack_sdk.socket_mode.request import SocketModeRequest
|
from slack_sdk.socket_mode.request import SocketModeRequest
|
||||||
from slack_sdk.socket_mode.response import SocketModeResponse
|
from slack_sdk.socket_mode.response import SocketModeResponse
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
|
from ee.onyx.server.tenants.product_gating import get_gated_tenants
|
||||||
from onyx.chat.models import ThreadMessage
|
from onyx.chat.models import ThreadMessage
|
||||||
from onyx.configs.app_configs import DEV_MODE
|
from onyx.configs.app_configs import DEV_MODE
|
||||||
from onyx.configs.app_configs import POD_NAME
|
from onyx.configs.app_configs import POD_NAME
|
||||||
@ -249,7 +251,12 @@ class SlackbotHandler:
|
|||||||
- If yes, store them in self.tenant_ids and manage the socket connections.
|
- If yes, store them in self.tenant_ids and manage the socket connections.
|
||||||
- If a tenant in self.tenant_ids no longer has Slack bots, remove it (and release the lock in this scope).
|
- If a tenant in self.tenant_ids no longer has Slack bots, remove it (and release the lock in this scope).
|
||||||
"""
|
"""
|
||||||
all_tenants = get_all_tenant_ids()
|
|
||||||
|
all_tenants = [
|
||||||
|
tenant_id
|
||||||
|
for tenant_id in get_all_tenant_ids()
|
||||||
|
if tenant_id not in get_gated_tenants()
|
||||||
|
]
|
||||||
|
|
||||||
token: Token[str | None]
|
token: Token[str | None]
|
||||||
|
|
||||||
@ -416,6 +423,7 @@ class SlackbotHandler:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
bot_info = socket_client.web_client.auth_test()
|
bot_info = socket_client.web_client.auth_test()
|
||||||
|
|
||||||
if bot_info["ok"]:
|
if bot_info["ok"]:
|
||||||
bot_user_id = bot_info["user_id"]
|
bot_user_id = bot_info["user_id"]
|
||||||
user_info = socket_client.web_client.users_info(user=bot_user_id)
|
user_info = socket_client.web_client.users_info(user=bot_user_id)
|
||||||
@ -426,9 +434,23 @@ class SlackbotHandler:
|
|||||||
logger.info(
|
logger.info(
|
||||||
f"Started socket client for Slackbot with name '{bot_name}' (tenant: {tenant_id}, app: {slack_bot_id})"
|
f"Started socket client for Slackbot with name '{bot_name}' (tenant: {tenant_id}, app: {slack_bot_id})"
|
||||||
)
|
)
|
||||||
|
except SlackApiError as e:
|
||||||
|
# Only error out if we get a not_authed error
|
||||||
|
if "not_authed" in str(e):
|
||||||
|
self.tenant_ids.add(tenant_id)
|
||||||
|
logger.error(
|
||||||
|
f"Authentication error: Invalid or expired credentials for tenant: {tenant_id}, app: {slack_bot_id}. "
|
||||||
|
"Error: {e}"
|
||||||
|
)
|
||||||
|
return
|
||||||
|
# Log other Slack API errors but continue
|
||||||
|
logger.error(
|
||||||
|
f"Slack API error fetching bot info: {e} for tenant: {tenant_id}, app: {slack_bot_id}"
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(
|
# Log other exceptions but continue
|
||||||
f"Could not fetch bot name: {e} for tenant: {tenant_id}, app: {slack_bot_id}"
|
logger.error(
|
||||||
|
f"Error fetching bot info: {e} for tenant: {tenant_id}, app: {slack_bot_id}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Append the event handler
|
# Append the event handler
|
||||||
|
Loading…
x
Reference in New Issue
Block a user