one of our login forms had an error on it. we log python exceptions to sql 
in a tween (pretty much using the same logic as in pyramid_exclog) under 
pyramid 1.8.3

here's the edge case:

the broken form got hit by a botnet, and the nonstop errors ate up all the 
space on the dedicated postgreql server logging device.  the sqlalchemy 
connection was erroneously not setup for autocommit, and that wedged the 
underlying db connection into a broken transaction that never cleaned up. 
 so even after space was restored on that device, all exception logging was 
broken because the finished callback never fired.

the tween logic was pretty much something like this:
    
     try:
          return handler(request)
     except Exception as e:
          # record e to db
          raise
   
somehow, a stale database connection was created within the Exception block 
and never released.

i've tried for hours, but I can't seem to create a use case situation where 
I can break a connection in the `try` or `except` blocks, and it doesn't 
get cleaned up by the finished callback under 1.8.3 or 1.9.x.  

does anyone know what might cause a finished callback to *not* execute?

i've mostly fixed this by moving to an autocommit, but i'd like to figure 
out what the heck happened.  

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pylons-discuss+unsubscr...@googlegroups.com.
To post to this group, send email to pylons-discuss@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/0ac394f7-5c7f-4e00-a5b9-7fc50baed6d8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to