From 6a77a13539f9236ee27094570ead79ed3b70a844 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Fri, 7 Jun 2019 16:47:17 -0400 Subject: [PATCH] Improve error for unserializable collective data XML errors turn out to be unserializable. Catch this general class of problems and provide a less devastating behavior. Doing an xml.fromstring('') is an example of how to trigger it. --- confluent_server/confluent/core.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/confluent_server/confluent/core.py b/confluent_server/confluent/core.py index 0846d947..96f92941 100644 --- a/confluent_server/confluent/core.py +++ b/confluent_server/confluent/core.py @@ -706,7 +706,11 @@ def handle_dispatch(connection, cert, dispatch, peername): def _forward_rsp(connection, res): - r = pickle.dumps(res) + try: + r = pickle.dumps(res) + except TypeError: + r = pickle.dumps(Exception( + 'Cannot serialize error, check collective.manager error logs for details' + str(res))) rlen = len(r) if not rlen: return @@ -915,7 +919,7 @@ def dispatch_request(nodes, manager, element, configmanager, inputdata, a = configmanager.get_collective_member(manager) try: remote = socket.create_connection((a['address'], 13001)) - remote.settimeout(90) + remote.settimeout(180) remote = ssl.wrap_socket(remote, cert_reqs=ssl.CERT_NONE, keyfile='/etc/confluent/privkey.pem', certfile='/etc/confluent/srvcert.pem')