You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(Describe your issue and goal here)
Currently, using lazy listener for FAAS (such as AWS Lambda), it's really difficult to debug. If we have a exception, we just have something like
Failed to run an internal function (Exception ABC)
We don't know exactly, what is the error, traceback, error line etc...
try:
await internal_func(
**build_async_required_kwargs(
logger=logger,
required_arg_names=arg_names,
request=request,
response=None,
this_func=internal_func,
)
)
except Exception as e:
logger.error(f"Failed to run an internal function ({e})")
So should we have an option to enable the exception traceback or provide some meaningful error information to debug instead of just simply message like that
Hi @jimmymaise, thanks for the feedback. We will look into this. This can be improved in future versions and/or needs to be clearly mentioned in the documents.
We are facing the same issue as @jimmymaise, I think it would be helpful to have the exception traceback (we are using sentry and would love to see what line is causing the issue).
However, this is a hacky workaround that strongly depends on the internal structure of this framework, so it's not desirable. I would be happy if bolt framework would resolve this issue.
Just stumbled across this issue as well, found a workaround by decorating the functions I use as lazy listeners but would love to see it included in base package 👍
Activity
[-]Make Exeption traceable in lazy listion[/-][+]Make Exeption traceable in lazy listener[/+]seratch commentedon Apr 20, 2022
Hi @jimmymaise, thanks for the feedback. We will look into this. This can be improved in future versions and/or needs to be clearly mentioned in the documents.
ddhanak commentedon Aug 18, 2022
We are facing the same issue as @jimmymaise, I think it would be helpful to have the exception traceback (we are using sentry and would love to see what line is causing the issue).
kevgliss commentedon Jan 10, 2023
We are also facing this issue; it's often unclear what is causing an exception (or swallowing them entirely).
angrychimp commentedon Sep 11, 2023
I'm running into this issue frequently as well. I'd love to see this updated
os1ma commentedon Apr 20, 2024
I'm running into the same issue.
As a workaround, I was able to display the stack trace with the following code.
from concurrent.futures import Executor from functools import wraps from logging import Logger from typing import Callable from slack_bolt.kwargs_injection import build_required_kwargs from slack_bolt.lazy_listener.runner import LazyListenerRunner from slack_bolt.request import BoltRequest from slack_bolt.util.utils import get_arg_names_of_callable def build_runnable_function( func: Callable[..., None], logger: Logger, request: BoltRequest, ) -> Callable[[], None]: arg_names = get_arg_names_of_callable(func) @wraps(func) def request_wired_func_wrapper() -> None: try: func( **build_required_kwargs( logger=logger, required_arg_names=arg_names, request=request, response=None, this_func=func, ) ) except Exception as e: - logger.error(f"Failed to run an internal function ({e})") + logger.exception(f"Failed to run an internal function ({e})") return request_wired_func_wrapper class PatchedThreadLazyListenerRunner(LazyListenerRunner): logger: Logger def __init__( self, logger: Logger, executor: Executor, ): self.logger = logger self.executor = executor def start(self, function: Callable[..., None], request: BoltRequest) -> None: self.executor.submit( build_runnable_function( func=function, logger=self.logger, request=request, ) )However, this is a hacky workaround that strongly depends on the internal structure of this framework, so it's not desirable. I would be happy if bolt framework would resolve this issue.
johnorcutt commentedon Mar 27, 2025
We've been running into this issue as well. Has there been any progress on this issue?
thentges commentedon Jan 15, 2026
Just stumbled across this issue as well, found a workaround by decorating the functions I use as lazy listeners but would love to see it included in base package 👍
luqmansen commentedon May 5, 2026
Just stumbled upon the same issue, and I think the fix is quite simple by wrapping the lazy received with try-catch, no?