Unverified Commit 913d5933 authored by Ben Konyi's avatar Ben Konyi Committed by GitHub

Check VM service URI is valid before attempting to start DDS (Re-upload #73998) (#74280)

parent 024c49da
...@@ -242,6 +242,20 @@ class FlutterDevice { ...@@ -242,6 +242,20 @@ class FlutterDevice {
completer.completeError('failed to connect to $observatoryUri', st); completer.completeError('failed to connect to $observatoryUri', st);
} }
} }
// First check if the VM service is actually listening on observatoryUri as
// this may not be the case when scraping logcat for URIs. If this URI is
// from an old application instance, we shouldn't try and start DDS.
try {
service = await connectToVmService(observatoryUri);
service.dispose();
} on Exception catch (exception) {
globals.printTrace('Fail to connect to service protocol: $observatoryUri: $exception');
if (!completer.isCompleted && !_isListeningForObservatoryUri) {
completer.completeError('failed to connect to $observatoryUri');
}
return;
}
// This first try block is meant to catch errors that occur during DDS startup // This first try block is meant to catch errors that occur during DDS startup
// (e.g., failure to bind to a port, failure to connect to the VM service, // (e.g., failure to bind to a port, failure to connect to the VM service,
// attaching to a VM service with existing clients, etc.). // attaching to a VM service with existing clients, etc.).
......
...@@ -2889,6 +2889,16 @@ void main() { ...@@ -2889,6 +2889,16 @@ void main() {
if (!caught) { if (!caught) {
fail('Expected a StateError to be thrown.'); fail('Expected a StateError to be thrown.');
} }
}, overrides: <Type, Generator>{
VMServiceConnector: () => (Uri httpUri, {
ReloadSources reloadSources,
Restart restart,
CompileExpression compileExpression,
GetSkSLMethod getSkSLMethod,
PrintStructuredErrorLogMethod printStructuredErrorLogMethod,
io.CompressionOptions compression,
Device device,
}) async => mockVMService,
})); }));
testUsingContext('nextPlatform moves through expected platforms', () { testUsingContext('nextPlatform moves through expected platforms', () {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment