Fix periodic timer error on interpreter shutdown #423
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current hack does not work, as I'm still able to see such messages in the
log:
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "pyenv/versions/2.7.12/lib/python2.7/threading.py", line 801, in __bootstrap_inner
File "python/lib/python2.7/site-packages/datadog/threadstats/periodic_timer.py", line 43, in run
File "pyenv/versions/2.7.12/lib/python2.7/threading.py", line 614, in wait
File "pyenv/versions/2.7.12/lib/python2.7/threading.py", line 355, in wait
<type 'exceptions.TypeError'>: 'NoneType' object is not callable
This changes the current code to leverage the same hack that the
threading
library uses: if the
sys
module is None, there's a good chance that's becausethe interpreter is shutdown down.
This change also improves the waiting loop by using the return value from
Event.wait()
which returns the value of the flag. That makes the threadfaster to quit when
end()
is called.