[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5192 - in trunk/gnue-common/src/rpc: . drivers/xmlrpc/pw_xmlrpc
From: |
jan |
Subject: |
r5192 - in trunk/gnue-common/src/rpc: . drivers/xmlrpc/pw_xmlrpc |
Date: |
Sat, 28 Feb 2004 14:20:43 -0600 (CST) |
Author: jan
Date: 2004-02-28 14:20:42 -0600 (Sat, 28 Feb 2004)
New Revision: 5192
Modified:
trunk/gnue-common/src/rpc/GCommBase.py
trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
Log:
transfer traceback from server to client (for pw_xmlrpc)
Modified: trunk/gnue-common/src/rpc/GCommBase.py
===================================================================
--- trunk/gnue-common/src/rpc/GCommBase.py 2004-02-28 20:04:30 UTC (rev
5191)
+++ trunk/gnue-common/src/rpc/GCommBase.py 2004-02-28 20:20:42 UTC (rev
5192)
@@ -30,7 +30,7 @@
from gnue.common.rpc import GComm
from gnue.common.apps import GDebug
-import string, sys, thread
+import string, sys, thread, traceback
##############################################################################
@@ -169,3 +169,19 @@
*args, **params)
+# Support to pass exception over the wire
+# TODO: write a decode exception, or a function to build a fake traceback
+
+def encodeExc():
+ exc = sys.exc_info()
+
+ GDebug.printMesg(1,'RPC detected Exception of type "%s", value: "%s".' % \
+ (exc[0],exc[1]))
+
+ error = string.join(traceback.format_exception(exc[0],exc[1], exc[2]),'\n')
+
+ # remove exception object, because garbage collector can't remove it
+ del(exc)
+
+ return error
+
Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
2004-02-28 20:04:30 UTC (rev 5191)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
2004-02-28 20:20:42 UTC (rev 5192)
@@ -44,7 +44,7 @@
from gnue.common.rpc import GComm
from gnue.common.apps import GDebug
from gnue.common.rpc.drivers._helpers import ObjectLibrarian, DirectoryServer
-from gnue.common.rpc import GCommBase
+from gnue.common.rpc.GCommBase import encodeExc
from BaseHTTPServer import BaseHTTPRequestHandler;
from SimpleHTTPServer import SimpleHTTPRequestHandler;
@@ -448,14 +448,13 @@
elif type(response) != type(()):
response = (response,)
except:
- # report exception back to server
- GDebug.printMesg(1,
- 'Unexpected Exception in XML-RPC code: %s:%s' % \
- (sys.exc_type, sys.exc_value))
+ # report exception back to server
response = xmlrpclib.dumps(
- xmlrpclib.Fault(1, "%s:%s" % (sys.exc_type, sys.exc_value)))
+ xmlrpclib.Fault(1, "%s" % encodeExc()))
+
else:
response = xmlrpclib.dumps(response,methodresponse=1)
+
except:
# internal error, report as HTTP server error
GDebug.printMesg(1,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5192 - in trunk/gnue-common/src/rpc: . drivers/xmlrpc/pw_xmlrpc,
jan <=