Title: [279009] trunk/Tools
Revision
279009
Author
jbed...@apple.com
Date
2021-06-17 14:27:17 -0700 (Thu, 17 Jun 2021)

Log Message

[webkitcorepy] Retry downloads in Autoinstall
https://bugs.webkit.org/show_bug.cgi?id=227134
<rdar://problem/79462182>

Reviewed by Aakash Jain.

* Scripts/libraries/webkitcorepy/setup.py: Bump version.
* Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
* Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:
(Package.Archive.download): Retry failed downloads
(AutoInstall): Allow for a single retry by default

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (279008 => 279009)


--- trunk/Tools/ChangeLog	2021-06-17 21:12:45 UTC (rev 279008)
+++ trunk/Tools/ChangeLog	2021-06-17 21:27:17 UTC (rev 279009)
@@ -1,3 +1,17 @@
+2021-06-17  Jonathan Bedard  <jbed...@apple.com>
+
+        [webkitcorepy] Retry downloads in Autoinstall
+        https://bugs.webkit.org/show_bug.cgi?id=227134
+        <rdar://problem/79462182>
+
+        Reviewed by Aakash Jain.
+
+        * Scripts/libraries/webkitcorepy/setup.py: Bump version.
+        * Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py: Ditto.
+        * Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py:
+        (Package.Archive.download): Retry failed downloads
+        (AutoInstall): Allow for a single retry by default
+
 2021-06-17  Chris Dumez  <cdu...@apple.com>
 
         Trying to take empty snapshots of the view should not cause crashes

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/setup.py (279008 => 279009)


--- trunk/Tools/Scripts/libraries/webkitcorepy/setup.py	2021-06-17 21:12:45 UTC (rev 279008)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/setup.py	2021-06-17 21:27:17 UTC (rev 279009)
@@ -30,7 +30,7 @@
 
 setup(
     name='webkitcorepy',
-    version='0.5.18',
+    version='0.5.19',
     description='Library containing various Python support classes and functions.',
     long_description=readme(),
     classifiers=[

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py (279008 => 279009)


--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py	2021-06-17 21:12:45 UTC (rev 279008)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/__init__.py	2021-06-17 21:27:17 UTC (rev 279009)
@@ -37,7 +37,7 @@
 from webkitcorepy.task_pool import TaskPool
 from webkitcorepy.credentials import credentials
 
-version = Version(0, 5, 18)
+version = Version(0, 5, 19)
 
 from webkitcorepy.autoinstall import Package, AutoInstall
 if sys.version_info > (3, 0):

Modified: trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py (279008 => 279009)


--- trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py	2021-06-17 21:12:45 UTC (rev 279008)
+++ trunk/Tools/Scripts/libraries/webkitcorepy/webkitcorepy/autoinstall.py	2021-06-17 21:27:17 UTC (rev 279009)
@@ -96,18 +96,30 @@
 
         def download(self):
             AutoInstall._verify_index()
-            response = AutoInstall._request(self.link)
-            try:
-                if response.code != 200:
-                    raise IOError('Failed to retrieve Python module with response code {}'.format(response.code))
-                with open(self.path, 'wb') as file:
-                    while True:
-                        data = "" ** 13)
-                        if not data:
-                            break
-                        file.write(data)
-            finally:
-                response.close()
+            count = 0
+            while count <= (AutoInstall.times_to_retry or 0):
+                response = None
+                try:
+                    response = AutoInstall._request(self.link)
+                    if not response or response.code != 200:
+                        raise IOError('Failed to retrieve Python module with response code {}'.format(response.code))
+                    with open(self.path, 'wb') as file:
+                        while True:
+                            data = "" ** 13)
+                            if not data:
+                                break
+                            file.write(data)
+                    return
+                except (IOError, URLError) as e:
+                    if count > (AutoInstall.times_to_retry or 0):
+                        raise
+                    else:
+                        AutoInstall.log(str(e))
+                        AutoInstall.log('Failed to download {}, retrying'.format(self.name))
+                finally:
+                    if response:
+                        response.close()
+                    count += 1
 
         def unpack(self, target):
             if not os.path.isfile(self.path):
@@ -378,6 +390,7 @@
     directory = None
     index = _default_pypi_index()
     timeout = 30
+    times_to_retry = 1
     version = Version(sys.version_info[0], sys.version_info[1], sys.version_info[2])
     packages = defaultdict(list)
     manifest = {}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to