This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
authentik/passbook/lib/sentry.py

65 lines
2 KiB
Python
Raw Normal View History

"""passbook sentry integration"""
2020-11-11 21:35:40 +00:00
from aioredis.errors import ConnectionClosedError, ReplyError
2020-02-23 18:48:14 +00:00
from billiard.exceptions import WorkerLostError
from botocore.client import ClientError
2020-09-15 09:29:43 +00:00
from celery.exceptions import CeleryError
2020-09-30 13:55:59 +00:00
from channels_redis.core import ChannelFull
2020-02-23 18:48:14 +00:00
from django.core.exceptions import DisallowedHost, ValidationError
from django.db import InternalError, OperationalError, ProgrammingError
from django_redis.exceptions import ConnectionInterrupted
from ldap3.core.exceptions import LDAPException
from redis.exceptions import ConnectionError as RedisConnectionError
2020-10-28 18:00:11 +00:00
from redis.exceptions import RedisError, ResponseError
2020-02-23 18:48:14 +00:00
from rest_framework.exceptions import APIException
2019-10-01 08:24:10 +00:00
from structlog import get_logger
2020-09-30 13:55:59 +00:00
from websockets.exceptions import WebSocketException
LOGGER = get_logger()
class SentryIgnoredException(Exception):
"""Base Class for all errors that are suppressed, and not sent to sentry."""
def before_send(event, hint):
"""Check if error is database error, and ignore if so"""
ignored_classes = (
2020-10-28 18:00:11 +00:00
# Inbuilt types
KeyboardInterrupt,
ConnectionResetError,
OSError,
# Django DB Errors
OperationalError,
2020-02-23 18:48:14 +00:00
InternalError,
ProgrammingError,
2020-10-28 18:00:11 +00:00
DisallowedHost,
ValidationError,
# Redis errors
RedisConnectionError,
ConnectionInterrupted,
2020-10-28 18:00:11 +00:00
RedisError,
ResponseError,
ReplyError,
ConnectionClosedError,
2020-10-28 18:00:11 +00:00
# websocket errors
ChannelFull,
WebSocketException,
# rest_framework error
APIException,
2020-10-28 18:00:11 +00:00
# celery errors
WorkerLostError,
2020-10-28 18:00:11 +00:00
CeleryError,
# S3 errors
2019-12-31 11:51:16 +00:00
ClientError,
2020-10-28 18:00:11 +00:00
# custom baseclass
SentryIgnoredException,
2020-10-28 18:00:11 +00:00
# ldap errors
LDAPException,
)
2019-12-31 11:51:16 +00:00
if "exc_info" in hint:
2020-07-07 12:02:20 +00:00
_, exc_value, _ = hint["exc_info"]
if isinstance(exc_value, ignored_classes):
LOGGER.info("Supressing error %r", exc_value)
return None
return event