CLIENT,SERVER: improve error message on client side
bzr revid: ced-6733fdd8bfd68743d3edaedf0d36da74287f11b8
This commit is contained in:
parent
93bcf9f92d
commit
881fa80438
|
@ -209,14 +209,15 @@ class GenericXMLRPCRequestHandler:
|
||||||
return r
|
return r
|
||||||
except Exception,e:
|
except Exception,e:
|
||||||
logger = Logger()
|
logger = Logger()
|
||||||
logger.notifyChannel("web-services", LOG_ERROR, 'Exception in call: ' + reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)))
|
tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
|
||||||
|
logger.notifyChannel("web-services", LOG_ERROR, 'Exception in call: ' + tb_s)
|
||||||
s=str(e)
|
s=str(e)
|
||||||
import tools
|
import tools
|
||||||
if tools.config['debug_mode']:
|
if tools.config['debug_mode']:
|
||||||
import pdb
|
import pdb
|
||||||
tb = sys.exc_info()[2]
|
tb = sys.exc_info()[2]
|
||||||
pdb.post_mortem(tb)
|
pdb.post_mortem(tb)
|
||||||
raise xmlrpclib.Fault(1,s)
|
raise xmlrpclib.Fault(s, tb_s)
|
||||||
|
|
||||||
class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
|
class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
|
||||||
pass
|
pass
|
||||||
|
@ -305,14 +306,15 @@ class TinySocketClientThread(threading.Thread):
|
||||||
ts.mysend(r)
|
ts.mysend(r)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
logger = Logger()
|
logger = Logger()
|
||||||
logger.notifyChannel("web-services", LOG_ERROR, 'Exception in call: ' + reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)))
|
tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
|
||||||
|
logger.notifyChannel("web-services", LOG_ERROR, 'Exception in call: ' + tb_s)
|
||||||
s=str(e)
|
s=str(e)
|
||||||
import tools
|
import tools
|
||||||
if tools.config['debug_mode']:
|
if tools.config['debug_mode']:
|
||||||
import pdb
|
import pdb
|
||||||
tb = sys.exc_info()[2]
|
tb = sys.exc_info()[2]
|
||||||
pdb.post_mortem(tb)
|
pdb.post_mortem(tb)
|
||||||
ts.mysend(e, exception=True)
|
ts.mysend(e, exception=True, traceback=tb_s)
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
self.threads.remove(self)
|
self.threads.remove(self)
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -23,8 +23,8 @@ class mysocket:
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
self.sock.shutdown(socket.SHUT_RDWR)
|
self.sock.shutdown(socket.SHUT_RDWR)
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
def mysend(self, msg, exception=False):
|
def mysend(self, msg, exception=False, traceback=None):
|
||||||
msg = cPickle.dumps(msg)
|
msg = cPickle.dumps([msg,traceback])
|
||||||
size = len(msg)
|
size = len(msg)
|
||||||
self.sock.send('%8d' % size)
|
self.sock.send('%8d' % size)
|
||||||
self.sock.send(exception and "1" or "0")
|
self.sock.send(exception and "1" or "0")
|
||||||
|
@ -54,9 +54,10 @@ class mysocket:
|
||||||
raise RuntimeError, "socket connection broken"
|
raise RuntimeError, "socket connection broken"
|
||||||
msg = msg + chunk
|
msg = msg + chunk
|
||||||
res = cPickle.loads(msg)
|
res = cPickle.loads(msg)
|
||||||
if isinstance(res,Exception):
|
if isinstance(res[0],Exception):
|
||||||
if exception:
|
if exception:
|
||||||
raise Myexception(exception, str(res))
|
raise Myexception(exception, str(res[0]), str(res[1]))
|
||||||
raise res
|
raise res[0]
|
||||||
else:
|
else:
|
||||||
return res
|
return res[0]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue