-On the server, when exceptions occur, pass back a traceback along with the other info
-On the client, added an expandable "error log" box at the bottom. When non-JSON responses are received, show the full response in the log. When exceptions are received, show the traceback in the log.
git-svn-id: http://test.kernel.org/svn/autotest/trunk@1361 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/json_rpc/serviceHandler.py b/frontend/afe/json_rpc/serviceHandler.py
index 1f6036c..93d8b6b 100644
--- a/frontend/afe/json_rpc/serviceHandler.py
+++ b/frontend/afe/json_rpc/serviceHandler.py
@@ -72,6 +72,7 @@
def handleRequest(self, json):
err=None
+ err_traceback = None
result = None
id_=''
@@ -95,16 +96,18 @@
try:
meth = self.findServiceEndpoint(methName)
except Exception, e:
- traceback.print_exc()
+ err_traceback = traceback.format_exc()
+ print err_traceback
err = e
if err == None:
try:
result = self.invokeServiceEndpoint(meth, args)
except Exception, e:
- traceback.print_exc()
+ err_traceback = traceback.format_exc()
+ print err_traceback
err = e
- resultdata = self.translateResult(result, err, id_)
+ resultdata = self.translateResult(result, err, err_traceback, id_)
return resultdata
@@ -130,9 +133,10 @@
def invokeServiceEndpoint(self, meth, args):
return meth(*args)
- def translateResult(self, rslt, err, id_):
+ def translateResult(self, rslt, err, err_traceback, id_):
if err != None:
- err = {"name": err.__class__.__name__, "message":str(err)}
+ err = {"name": err.__class__.__name__, "message":str(err),
+ "traceback": err_traceback}
rslt = None
try: