From d5166686f917b5b85f3e5957e0535490e2d16f6e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 3 Mar 2012 18:25:50 +0100 Subject: [PATCH] PBS: Make connection to hub more robust. Just ignore the exceptions that may be raised and retry.. This may not be the best way, but we will see how this works. --- python/pakfire/client/builder.py | 3 ++ python/pakfire/client/transport.py | 49 ++++++++++++++++-------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/python/pakfire/client/builder.py b/python/pakfire/client/builder.py index 0292f81c4..5381efe08 100644 --- a/python/pakfire/client/builder.py +++ b/python/pakfire/client/builder.py @@ -63,6 +63,9 @@ class PakfireDaemon(object): # Save when last keepalive was sent. self._last_keepalive = 0 + # Send an initial keepalive message. + self.send_keepalive() + def run(self, heartbeat=1, max_processes=None): # By default do not start more than two processes per CPU core. if max_processes is None: diff --git a/python/pakfire/client/transport.py b/python/pakfire/client/transport.py index 7a933e28f..68eb3e604 100644 --- a/python/pakfire/client/transport.py +++ b/python/pakfire/client/transport.py @@ -20,6 +20,7 @@ ############################################################################### import socket +import ssl import time import xmlrpclib @@ -43,28 +44,32 @@ class XMLRPCMixin: try: ret = xmlrpclib.Transport.single_request(self, *args, **kwargs) - except socket.error, e: - # These kinds of errors are not fatal, but they can happen on - # a bad internet connection or whatever. - # 32 Broken pipe - # 110 Connection timeout - # 111 Connection refused - if not e.errno in (32, 110, 111,): - raise - - log.warning(_("Socket error: %s") % e) - - except xmlrpclib.ProtocolError, e: - # Log all XMLRPC protocol errors. - log.error("XMLRPC protocol error:") - log.error(" URL: %s" % e.url) - log.error(" HTTP headers:") - for header in e.headers.items(): - log.error(" %s: %s" % header) - log.error(" Error code: %s" % e.errcode) - log.error(" Error message: %s" % e.errmsg) - raise - + except (socket.error, ssl.SSLError, \ + xmlrpclib.Fault, xmlrpclib.ProtocolError, xmlrpclib.ResponseError), error_code: + pass + + #except socket.error, e: + # # These kinds of errors are not fatal, but they can happen on + # # a bad internet connection or whatever. + # # 32 Broken pipe + # # 110 Connection timeout + # # 111 Connection refused + # if not e.errno in (32, 110, 111,): + # raise + # + # log.warning(_("Socket error: %s") % e) + # + #except xmlrpclib.ProtocolError, e: + # # Log all XMLRPC protocol errors. + # log.error("XMLRPC protocol error:") + # log.error(" URL: %s" % e.url) + # log.error(" HTTP headers:") + # for header in e.headers.items(): + # log.error(" %s: %s" % header) + # log.error(" Error code: %s" % e.errcode) + # log.error(" Error message: %s" % e.errmsg) + # raise + # else: # If request was successful, we can break the loop. break -- 2.39.5