[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
r5481 - in trunk/gnue-common/src/rpc/drivers: . xmlrpc/pw_xmlrpc
From: |
reinhard |
Subject: |
r5481 - in trunk/gnue-common/src/rpc/drivers: . xmlrpc/pw_xmlrpc |
Date: |
Tue, 23 Mar 2004 11:53:08 -0600 (CST) |
Author: reinhard
Date: 2004-03-23 11:53:06 -0600 (Tue, 23 Mar 2004)
New Revision: 5481
Modified:
trunk/gnue-common/src/rpc/drivers/Base.py
trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py
trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
Log:
Correctly transfer tracebacks over the RPC connection.
Modified: trunk/gnue-common/src/rpc/drivers/Base.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/Base.py 2004-03-23 17:05:16 UTC (rev
5480)
+++ trunk/gnue-common/src/rpc/drivers/Base.py 2004-03-23 17:53:06 UTC (rev
5481)
@@ -280,23 +280,21 @@
# Return an exception
# ---------------------------------------------------------------------------
- def raiseException(self, exception, message, event=None):
+ def raiseException (self, exception, message, event=None):
raise exception, message
# =============================================================================
# Support to pass exception over the wire
# =============================================================================
-# TODO: write a decode exception, or a function to build a fake traceback
+def encodeException ():
+ exc = sys.exc_info ()
-def encodeExc():
- exc = sys.exc_info()
+ GDebug.printMesg (1, 'RPC detected Exception of type "%s", value: "%s".' % \
+ (exc [0], exc [1]))
- 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]), '')
- 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)
Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py
2004-03-23 17:05:16 UTC (rev 5480)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ClientAdapter.py
2004-03-23 17:53:06 UTC (rev 5481)
@@ -103,7 +103,10 @@
to_call = getattr (self.__proxy, method);
- result = to_call (*__args, **params)
+ try:
+ result = to_call (*__args, **params)
+ except xmlrpclib.Fault, e:
+ raise client.DistantError, e.faultString
# check, if an object handle is sent
# TODO: make a better check
Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
2004-03-23 17:05:16 UTC (rev 5480)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
2004-03-23 17:53:06 UTC (rev 5481)
@@ -44,7 +44,7 @@
from gnue.common.rpc import server
from gnue.common.apps import GDebug
from gnue.common.rpc.drivers._helpers import ObjectLibrarian, DirectoryServer
-from gnue.common.rpc.drivers.Base import encodeExc
+from gnue.common.rpc.drivers.Base import encodeException
from BaseHTTPServer import BaseHTTPRequestHandler;
from SimpleHTTPServer import SimpleHTTPRequestHandler;
@@ -455,8 +455,7 @@
response = (response,)
except:
# report exception back to server
- response = xmlrpclib.dumps(
- xmlrpclib.Fault(1, "%s" % encodeExc()))
+ response = xmlrpclib.dumps (xmlrpclib.Fault (1, encodeException ()))
else:
response = xmlrpclib.dumps(response,methodresponse=1)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- r5481 - in trunk/gnue-common/src/rpc/drivers: . xmlrpc/pw_xmlrpc,
reinhard <=