-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: