Add retries to `pub.dev/api/` calls (#199)
* Add retries to pub client calls
* Remove type
* Add changelog entry
* Also post workflow failures
diff --git a/.github/workflows/post_summaries.yaml b/.github/workflows/post_summaries.yaml
index 1548c99..cfca757 100644
--- a/.github/workflows/post_summaries.yaml
+++ b/.github/workflows/post_summaries.yaml
@@ -17,8 +17,7 @@
pull-requests: write
runs-on: ubuntu-latest
if: >
- github.event.workflow_run.event == 'pull_request' &&
- github.event.workflow_run.conclusion == 'success'
+ github.event.workflow_run.event == 'pull_request'
continue-on-error: true
steps:
diff --git a/pkgs/firehose/CHANGELOG.md b/pkgs/firehose/CHANGELOG.md
index 8d80084..abf4207 100644
--- a/pkgs/firehose/CHANGELOG.md
+++ b/pkgs/firehose/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.33
+
+- Retry calls to pub.dev API.
+
## 0.3.32
- Fix an issue validating pre-release git publishing tags (#176).
diff --git a/pkgs/firehose/lib/src/pub.dart b/pkgs/firehose/lib/src/pub.dart
index 9b875df..49f9e77 100644
--- a/pkgs/firehose/lib/src/pub.dart
+++ b/pkgs/firehose/lib/src/pub.dart
@@ -13,8 +13,8 @@
http.Client get httpClient => _httpClient ??= http.Client();
Future<bool> hasPublishedVersion(String name, String version) async {
- var response =
- await httpClient.get(Uri.parse('https://pub.dev/api/packages/$name'));
+ var uri = Uri.parse('https://pub.dev/api/packages/$name');
+ var response = await getCall(uri, retries: 3);
if (response.statusCode != 200) {
return false;
}
@@ -26,6 +26,20 @@
.contains(version);
}
+ Future<http.Response> getCall(Uri uri, {required int retries}) async {
+ for (var i = 0; i < retries + 1; i++) {
+ try {
+ var response = await httpClient.get(uri);
+ return response;
+ } catch (e) {
+ if (i >= retries) {
+ rethrow;
+ }
+ }
+ }
+ throw AssertionError('This should be unreachable');
+ }
+
void close() {
_httpClient?.close();
}
diff --git a/pkgs/firehose/pubspec.yaml b/pkgs/firehose/pubspec.yaml
index 04cde48..28902f9 100644
--- a/pkgs/firehose/pubspec.yaml
+++ b/pkgs/firehose/pubspec.yaml
@@ -1,6 +1,6 @@
name: firehose
description: A tool to automate publishing of Pub packages from GitHub actions.
-version: 0.3.32
+version: 0.3.33
repository: https://github.com/dart-lang/ecosystem/tree/main/pkgs/firehose
environment: