@@ -10,6 +10,7 @@ import 'dart:isolate' show Isolate;
1010
1111import 'package:_pub_shared/data/task_payload.dart' ;
1212import 'package:_pub_shared/pubapi.dart' ;
13+ import 'package:api_builder/api_builder.dart' ;
1314import 'package:clock/clock.dart' show clock;
1415import 'package:http/http.dart' show Client, ClientException;
1516import 'package:indexed_blob/indexed_blob.dart' ;
@@ -67,6 +68,18 @@ Future<void> analyze(Payload payload) async {
6768 client: client.withAuthorization (() => p.token),
6869 );
6970
71+ void warnTaskAborted (Exception e, StackTrace st) {
72+ _log.warning (
73+ 'Task was aborted when uploading ${payload .package } / ${p .version }' ,
74+ e,
75+ st);
76+ }
77+
78+ void shoutTaskError (Object e, StackTrace st) {
79+ _log.shout (
80+ 'failed to process ${payload .package } / ${p .version }' , e, st);
81+ }
82+
7083 try {
7184 // Skip analysis, if we're past the worker deadline
7285 if (clock.now ().isBefore (workerDeadline)) {
@@ -93,13 +106,15 @@ Future<void> analyze(Payload payload) async {
93106 );
94107 }
95108 } on TaskAbortedException catch (e, st) {
96- _log.warning (
97- 'Task was aborted when uploading ${payload .package } / ${p .version }' ,
98- e,
99- st);
109+ warnTaskAborted (e, st);
110+ } on ApiResponseException catch (e, st) {
111+ if (e.status == 400 && e.code == 'TaskAborted' ) {
112+ warnTaskAborted (e, st);
113+ } else {
114+ shoutTaskError (e, st);
115+ }
100116 } catch (e, st) {
101- _log.shout (
102- 'failed to process ${payload .package } / ${p .version }' , e, st);
117+ shoutTaskError (e, st);
103118 }
104119 }
105120 } finally {
0 commit comments