Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Raven 6.3.0 "'Queue' object has no attribute 'all_tasks_done'" #14

Closed
geoffjukes opened this issue Nov 10, 2017 · 6 comments
Closed

Raven 6.3.0 "'Queue' object has no attribute 'all_tasks_done'" #14

geoffjukes opened this issue Nov 10, 2017 · 6 comments

Comments

@geoffjukes
Copy link

geoffjukes commented Nov 10, 2017

I'm seeing these errors/warnings in the logs using Raven 6.3.0

Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "/opt/io/storage/.env/lib/python3.5/site-packages/raven/transport/threaded.py", line 65, in main_thread_terminated
if not self._timed_queue_join(initial_timeout):
File "/opt/io/storage/.env/lib/python3.5/site-packages/raven/transport/threaded.py", line 96, in _timed_queue_join
queue.all_tasks_done.acquire()
AttributeError: 'Queue' object has no attribute 'all_tasks_done'

Is this a bug in the current release of Raven?

@mattbennett
Copy link
Member

This error the result of using the threaded Raven transport in an Eventlet environment. It is mostly harmless because it only occurs at teardown. Raven includes an Eventlet transport though, which avoids the error and has the side-effect of not blocking the Nameko worker thread.

You used to be able to select the transport using the DSN (e.g. eventlet+http://...) although this has been deprecated.

I used to think it was somewhat useful to be able to opt-in to using the eventlet transport, but now I think nameko-sentry should just hardcode the transport when it creates the client. In the mean time prepending your DSN with eventlet+ will still work until transport selection via DSN is actually removed.

@geoffjukes
Copy link
Author

Thanks @mattbennett, I'll update my DSN's. I agree regarding hard-coding the tra nsport - it's not as if Eventlet is optional ;)

@geoffjukes
Copy link
Author

geoffjukes commented Nov 14, 2017

Now I get a warning:

UserWarning: Transport selection via DSN is deprecated. You should explicitly pass the transport class to Client() instead.

So I'm going to revert my change to the DSN, and just live with the warning. I do only get it when an exception is thrown (the above, I get on every start)

@mattbennett
Copy link
Member

The warning here is just telling you that transport selection via DSN is deprecated and will be removed in the future. It still works, for now.

The other message is an exception, albeit one that happens inside an eventlet thread and doesn't bubble out.

So pick your poison 😉 They're both benign but I'll cut a release soon that hardcodes the transport and does away with both of them.

@geoffjukes
Copy link
Author

@mattbennett "I'll cut a release soon that hardcodes the transport and does away with both of them" :)

@geoffjukes geoffjukes reopened this Feb 2, 2018
@mattbennett
Copy link
Member

mattbennett commented Feb 7, 2018

Sorry for the delay @geoffjukes. This is fixed in #15 and released in version 1.0.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants