]> git.ipfire.org Git - pakfire.git/commitdiff
PBS: Make connection to hub more robust.
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 Mar 2012 17:25:50 +0000 (18:25 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 3 Mar 2012 17:25:50 +0000 (18:25 +0100)
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
python/pakfire/client/transport.py

index 0292f81c4b81d1e1ea307335c039cff2998cd670..5381efe08bf7c82a8e51bbe93aae0e0cb837952b 100644 (file)
@@ -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:
index 7a933e28f7d8f7693fe5da9fac50fc12820fe6d6..68eb3e604195742f34006d72af74db1f118ff34c 100644 (file)
@@ -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