Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions MIGRATION_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ Looking to upgrade from Sentry SDK 2.x to 3.x? Here's a comprehensive list of wh
- Dropped support for Django versions below 2.0.
- Dropped support for trytond versions below 5.0.
- Dropped support for Falcon versions below 3.0.
- Dropped support for eventlet completely.

### Deprecated

Expand Down
3 changes: 0 additions & 3 deletions sentry_sdk/_queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@
https://bugs.python.org/issue14976
https://github.com/sqlalchemy/sqlalchemy/blob/4eb747b61f0c1b1c25bdee3856d7195d10a0c227/lib/sqlalchemy/queue.py#L1

We also vendor the code to evade eventlet's broken monkeypatching, see
https://github.com/getsentry/sentry-python/pull/484


Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation;
Expand Down
19 changes: 1 addition & 18 deletions sentry_sdk/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -1240,7 +1240,7 @@ def parse_version(version: str) -> Optional[Tuple[int, ...]]:

def _is_contextvars_broken() -> bool:
"""
Returns whether gevent/eventlet have patched the stdlib in a way where thread locals are now more "correct" than contextvars.
Returns whether gevent has patched the stdlib in a way where thread locals are now more "correct" than contextvars.
"""
try:
import gevent
Expand Down Expand Up @@ -1269,23 +1269,6 @@ def _is_contextvars_broken() -> bool:
except ImportError:
pass

try:
import greenlet
from eventlet.patcher import is_monkey_patched # type: ignore

greenlet_version = parse_version(greenlet.__version__)

if greenlet_version is None:
logger.error(
"Internal error in Sentry SDK: Could not parse Greenlet version from greenlet.__version__."
)
return False

if is_monkey_patched("thread") and greenlet_version < (0, 5):
return True
except ImportError:
pass

return False


Expand Down
23 changes: 3 additions & 20 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@
except ImportError:
gevent = None

try:
import eventlet
except ImportError:
eventlet = None

import sentry_sdk
import sentry_sdk.utils
from sentry_sdk.envelope import Envelope
Expand Down Expand Up @@ -334,23 +329,11 @@ def read_flush(self):
# scope=session ensures that fixture is run earlier
@pytest.fixture(
scope="session",
params=[None, "eventlet", "gevent"],
ids=("threads", "eventlet", "greenlet"),
params=[None, "gevent"],
ids=("threads", "greenlet"),
)
def maybe_monkeypatched_threading(request):
if request.param == "eventlet":
if eventlet is None:
pytest.skip("no eventlet installed")

try:
eventlet.monkey_patch()
except AttributeError as e:
if "'thread.RLock' object has no attribute" in str(e):
# https://bitbucket.org/pypy/pypy/issues/2962/gevent-cannot-patch-rlock-under-pypy-27-7
pytest.skip("https://github.com/eventlet/eventlet/issues/546")
else:
raise
elif request.param == "gevent":
if request.param == "gevent":
if gevent is None:
pytest.skip("no gevent installed")
try:
Expand Down
Loading