Skip to content

Instantly share code, notes, and snippets.

@talwai
Created May 12, 2017 22:31
Show Gist options
  • Save talwai/c3a000edda6db8312210c74caaded261 to your computer and use it in GitHub Desktop.
Save talwai/c3a000edda6db8312210c74caaded261 to your computer and use it in GitHub Desktop.
--- /home/vagrant/python/lib/python2.7/site-packages/blinker/base.py 2017-05-12 22:29:27.020638000 +0000
+++ base.py 2017-05-12 22:29:02.000000000 +0000
@@ -21,6 +21,13 @@
symbol,
)
+import logging;
+FORMAT = '%(asctime)s %(message)s'
+
+log = logging.getLogger()
+handler = logging.FileHandler("./ddtrace_blinker.log")
+handler.setFormatter(logging.Formatter(FORMAT))
+log.addHandler(handler)
ANY = symbol('ANY')
ANY.__doc__ = 'Token for "any sender".'
@@ -108,6 +115,7 @@
is garbage collected. Defaults to True.
"""
+ log.warn("Connected %s %s %s", receiver, sender, weak)
receiver_id = hashable_identity(receiver)
if weak:
receiver_ref = reference(receiver, self._cleanup_receiver)
@@ -253,6 +261,7 @@
# Using '*sender' rather than 'sender=None' allows 'sender' to be
# used as a keyword argument- i.e. it's an invisible name in the
# function signature.
+ log.warn("Sent %s %s", sender, kwargs)
if len(sender) == 0:
sender = None
elif len(sender) > 1:
@@ -313,6 +322,7 @@
to disconnect from all senders. Defaults to ``ANY``.
"""
+ log.warn("Disconnected %s %s", receiver, sender)
if sender is ANY:
sender_id = ANY_ID
else:
@@ -327,6 +337,7 @@
sender=sender)
def _disconnect(self, receiver_id, sender_id):
+ log.warn("_disconnected %s %s", receiver_id, sender_id)
if sender_id == ANY_ID:
if self._by_receiver.pop(receiver_id, False):
for bucket in self._by_sender.values():
@@ -341,6 +352,7 @@
def _cleanup_sender(self, sender_ref):
"""Disconnect all receivers from a sender."""
+ log.warn("_cleanup_sender %s %s", sender_ref)
sender_id = sender_ref.sender_id
assert sender_id != ANY_ID
self._weak_senders.pop(sender_id, None)
@talwai
Copy link
Author

talwai commented May 12, 2017

apply with

$ wget -O blinker.patch https://gist.githubusercontent.com/talwai/c3a000edda6db8312210c74caaded261/raw/7f92eec60ed1b52eeff32fc863d774778afc6c22/blinker.patch

$ patch /path/to/site-packages/blinker/base.py blinker.patch

For a traced flask app using blinker, this will output all signal operations into $CWD/ddtrace_blinker.log . Hopefully this will let us see if any receivers get disconnected or unintentionally lost to garbage collection.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment