[kernel_worker] retry on failure
Workaround for https://github.com/dart-lang/sdk/issues/36644
See similar for dartdevc: https://dart-review.googlesource.com/c/sdk/+/99442
Change-Id: Id02549a7bd8110b4691a724fa8930ede477464f8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99735
Commit-Queue: Vijay Menon <vsm@google.com>
Reviewed-by: Jake Macdonald <jakemac@google.com>
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index 3723077..c866ed2 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -53,11 +53,24 @@
} else {
previousState = null;
}
- var result = await computeKernel(request.arguments,
- isWorker: true,
- outputBuffer: outputBuffer,
- inputs: request.inputs,
- previousState: previousStateToPass);
+ ComputeKernelResult result;
+ // TODO(vsm): See https://github.com/dart-lang/sdk/issues/36644.
+ // If the CFE is crashing with previous state, then clear compilation
+ // state and try again.
+ try {
+ result = await computeKernel(request.arguments,
+ isWorker: true,
+ outputBuffer: outputBuffer,
+ inputs: request.inputs,
+ previousState: previousStateToPass);
+ } catch (_) {
+ outputBuffer.clear();
+ result = await computeKernel(request.arguments,
+ isWorker: true,
+ outputBuffer: outputBuffer,
+ inputs: request.inputs,
+ previousState: null);
+ }
previousState = result.previousState;
if (!result.succeeded) {
response.exitCode = 15;