wrap provenance download & verification in retry
Bug: https://github.com/flutter/flutter/issues/151791
Change-Id: Ic0e00dec2fe96612b471ca30a7cff39c6126d0b5
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/58420
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Christopher Fujino <fujino@google.com>
diff --git a/recipe_modules/flutter_bcid/__init__.py b/recipe_modules/flutter_bcid/__init__.py
index 767e06f..ce4fd70 100644
--- a/recipe_modules/flutter_bcid/__init__.py
+++ b/recipe_modules/flutter_bcid/__init__.py
@@ -6,6 +6,7 @@
'dart/dart',
'depot_tools/gsutil',
'flutter/repo_util',
+ 'flutter/retry',
'recipe_engine/bcid_reporter',
'recipe_engine/buildbucket',
'recipe_engine/file',
diff --git a/recipe_modules/flutter_bcid/api.py b/recipe_modules/flutter_bcid/api.py
index ef8413a..4a6cd86 100644
--- a/recipe_modules/flutter_bcid/api.py
+++ b/recipe_modules/flutter_bcid/api.py
@@ -72,9 +72,18 @@
with self.m.step.nest("Verify %s provenance" % filename):
verify_temp_path = self.m.path.mkdtemp("verify")
download_path = download_path = verify_temp_path.join(filename)
- bcid_response = self.m.dart.download_and_verify(
- filename, bucket, gcs_path_without_bucket, download_path,
- 'misc_software://flutter/engine'
+ def download_and_verify():
+ return self.m.dart.download_and_verify(
+ filename, bucket, gcs_path_without_bucket, download_path,
+ 'misc_software://flutter/engine'
+ )
+
+ # The provenance file may not have been uploaded yet
+ bcid_response = self.m.retry.wrap(
+ download_and_verify,
+ sleep=60,
+ backoff_factor=2,
+ max_attempts=4,
)
artifact_vsa = bcid_response['verificationSummary']