TypeError: exceptions must be old-style classes or derived from BaseException, not NoneType
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Medium
|
Samuel Merritt |
Bug Description
proxy_logging middleware seems to have some kind of race condition when re-raising an exception under high load:
May 16 16:19:44 swift-proxy-02 proxy-server Error: exceptions must be old-style classes or derived from BaseException, not NoneType: #012Traceback (most recent call last):#012 File "/usr/lib/
and the problematic code:
try:
except Exception:
req = Request(env)
raise
else:
return iter_response(
Still don't know why this is happening but this (related to eventlet) explanation sounds reasonable:
http://
I'm no python guru so I could be completely wrong.
Changed in swift: | |
status: | Incomplete → Fix Committed |
Changed in swift: | |
milestone: | none → 2.4.0 |
status: | Fix Committed → Fix Released |
Yep, seems like it's legit. If the logging does socket IO, then it may cause a greenlet switch, and I don't think exc_info is preserved with the current greenlet as it's not on the stack.