retry getting the main isolate (#68894)

This commit is contained in:
Dan Field 2020-10-23 15:55:32 -07:00 committed by GitHub
parent ec0a757430
commit 9951638f3b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -96,11 +96,28 @@ class VMServiceFlutterDriver extends FlutterDriver {
final VMServiceClientConnection connection = final VMServiceClientConnection connection =
await vmServiceConnectFunction(dartVmServiceUrl, headers: headers); await vmServiceConnectFunction(dartVmServiceUrl, headers: headers);
final VMServiceClient client = connection.client; final VMServiceClient client = connection.client;
final VM vm = await client.getVM();
final VMIsolateRef isolateRef = isolateNumber == Future<VMIsolateRef> _waitForRootIsolate() async {
null ? vm.isolates.first : bool _checkIsolate(VMIsolateRef ref) => ref.number == isolateNumber;
vm.isolates.firstWhere( while (true) {
(VMIsolateRef isolate) => isolate.number == isolateNumber); final VM vm = await client.getVM();
if (vm.isolates.isEmpty || (isolateNumber != null && !vm.isolates.any(_checkIsolate))) {
await Future<void>.delayed(_kPauseBetweenReconnectAttempts);
continue;
}
return isolateNumber == null
? vm.isolates.first
: vm.isolates.firstWhere(_checkIsolate);
}
}
final VMIsolateRef isolateRef = await _warnIfSlow<VMIsolateRef>(
future: _waitForRootIsolate(),
timeout: kUnusuallyLongTimeout,
message: isolateNumber == null
? 'The root isolate is taking an unuusally long time to start.'
: 'Isolate $isolateNumber is taking an unusually long time to start.',
);
_log('Isolate found with number: ${isolateRef.number}'); _log('Isolate found with number: ${isolateRef.number}');
VMIsolate isolate = await isolateRef.loadRunnable(); VMIsolate isolate = await isolateRef.loadRunnable();