Resolved: (MODPYTHON-91) Improve error message when "quit"
Web Server forum
Back To The Forum Home!Search!Private Messaging System

Web Server Talk Web Server Talk > Web Servers reviews > Apache Server configuration support > Apache Mod-Python > Resolved: (MODPYTHON-91) Improve error message when "quit"




  Last Thread   Next Thread Next
  Show Printable Version Email this Page Subscribe to this Thread      Post New Thread    Post A Reply      

    Resolved: (MODPYTHON-91) Improve error message when "quit"  
Graham Dumpleton (JIRA)


View Ip Address Report This Message To A Moderator Edit/Delete Message


 
04-24-06 01:02 PM

[ http://issues.apache.org/jira/brows...HON-91?page=all ]

Graham Dumpleton resolved MODPYTHON-91:
---------------------------------------

Fix Version: 3.3
Resolution: Fixed

> Improve error message when "quit" run in pdb debugger.
> ------------------------------------------------------
>
>          Key: MODPYTHON-91
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-91
>      Project: mod_python
>         Type: Improvement

>   Components: core
>     Versions: 3.3
>     Reporter: Graham Dumpleton
>     Assignee: Graham Dumpleton
>     Priority: Minor
>      Fix For: 3.3

>
> If one has enabled PythonEnablePdb and correctly running "httpd" with -DON
E_PROCESS option, in the debugger, if you run the "quit" command in the debu
gger, you get back the result 500 error message reads as:
>   Mod_python error: "PythonHandler mptest"
>   Traceback (most recent call last):
>     File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/pyt
hon2.3/site-packages/mod_python/apache.py", line 313, in HandlerDispatch
>       assert (type(result) == type(int())), \
>   AssertionError: Handler 'mptest' returned invalid return code.
> It might be nice to have an error response which actually indicates in som
e way that the debugger was explicitly quit for the request that was being d
ebugged.
> The reason that the error above occurs now is that the debugger support us
es the call:
>   result = pdb.runcall(object, conn)
> This ultimately executes bdb.Bdb.runcall();
>     def runcall(self, func, *args):
>         self.reset()
>         sys.settrace(self.trace_dispatch)
>         res = None
>         try:
>             try:
>                 res = func(*args)
>             except BdbQuit:
>                 pass
>         finally:
>             self.quitting = 1
>             sys.settrace(None)
>         return res
> As can be seen, the exception BdbQuit indicating that the "quit" command had been 
run is caught and ignored, with the result that None is then returned as if from the
 handler itself. This causes the upstream exception to be raised that the result is 
not
an integer.
> One possibility is run replace pdb.runcall() invocation with:
>                         #result = pdb.runcall(object, req)
>                         debugger = pdb.Pdb()
>                         debugger.reset()
>                         sys.settrace(debugger.trace_dispatch)
>                         try:
>                             return object(req)
>                         finally:
>                             debugger.quitting = 1
>                             sys.settrace(None)
> If this is done, the BdbQuit exception ignored and is propogated up. The e
rror message then at least can be linked better as being related to the debu
gger.
>   Mod_python error: "PythonHandler mptest"
>   Traceback (most recent call last):
>     File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/pyt
hon2.3/site-packages/mod_python/apache.py", line 303, in HandlerDispatch
>       return object(req)
>     File "/Users/grahamd/Sites/importer/mptest.py", line 5, in handler
>       req.content_type = 'text/plain'
>     File "/Users/grahamd/Sites/importer/mptest.py", line 5, in handler
>       req.content_type = 'text/plain'
>    File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/pyth
on2.3/bdb.py", line 48, in trace_dispatch
>       return self.dispatch_line(frame)
>     File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/pyt
hon2.3/bdb.py", line 61, in dispatch_line
>       if self.quitting: raise BdbQuit
>   BdbQuit
> Alternatively a special purpose error message could be generated to indicate that 
the debugging of the handler for that request was explicitly quit.






[ Post a follow-up to this message ]



    Sponsored Links  




 





   All times are GMT. The time now is 04:03 AM.      Post New Thread    Post A Reply      
  Last Thread   Next Thread Next


Most Popular forums 

Forum Jump:
Rate This Thread:

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is OFF
 
Medical and Health forum | Computer Games Reviews | Graphics design forum

Back To The Top
Home | Usercp | Faq | Register