When using logging.exception sentry does not release exception instance, which results in the memory leak. Exception could be pretty heavy, so depending on the app, it could even cause an OOM.
import logging
import weakref
import time
import sentry_sdk
weak_exception = None
class CustomException(Exception):
pass
def callback(ref):
print("Exception was garbage collected!")
sentry_sdk.init(<init params>)
try:
raise CustomException('Custom Exception')
except Exception as e:
logging.exception("Exception logging")
weak_exception = weakref.ref(e, callback)
sentry_sdk.flush()
while True:
time.sleep(1)
print(weak_exception())
In the code above, with sentry OFF, exception is garbage collected almost immediately, with sentry ON it stays around even after sentry is forced to flush all the events.
It seems like pretty severe issue, so curious if there is any workaround.
Version 2.5
When using
logging.exceptionsentry does not release exception instance, which results in the memory leak. Exception could be pretty heavy, so depending on the app, it could even cause an OOM.In the code above, with sentry OFF, exception is garbage collected almost immediately, with sentry ON it stays around even after sentry is forced to flush all the events.
It seems like pretty severe issue, so curious if there is any workaround.
Version 2.5