Unverified Commit a3b3d53d authored by Ben Konyi's avatar Ben Konyi Committed by GitHub

Revert "Revert "Ensure VmService instance is disposed after failed direct...

Revert "Revert "Ensure VmService instance is disposed after failed direct connection attempt (#66123)" (#66164)" (#66377)

This reverts commit 3e6863ab.
parent 2102bb03
...@@ -156,9 +156,10 @@ class FallbackDiscovery { ...@@ -156,9 +156,10 @@ class FallbackDiscovery {
// Attempt to connect to the VM service 5 times. // Attempt to connect to the VM service 5 times.
int attempts = 0; int attempts = 0;
Exception firstException; Exception firstException;
VmService vmService;
while (attempts < 5) { while (attempts < 5) {
try { try {
final VmService vmService = await _vmServiceConnectUri( vmService = await _vmServiceConnectUri(
assumedWsUri.toString(), assumedWsUri.toString(),
); );
final VM vm = await vmService.getVM(); final VM vm = await vmService.getVM();
...@@ -167,15 +168,17 @@ class FallbackDiscovery { ...@@ -167,15 +168,17 @@ class FallbackDiscovery {
isolateRefs.id, isolateRefs.id,
); );
final LibraryRef library = isolateResponse.rootLib; final LibraryRef library = isolateResponse.rootLib;
if (library != null && library.uri.startsWith('package:$packageName')) { if (library != null &&
(library.uri.startsWith('package:$packageName') ||
library.uri.startsWith(RegExp(r'file:\/\/\/.*\/' + packageName)))) {
UsageEvent( UsageEvent(
_kEventName, _kEventName,
'success', 'success',
flutterUsage: _flutterUsage, flutterUsage: _flutterUsage,
).send(); ).send();
// We absolutely must dispose this vmService instance, otherwise // This vmService instance must be disposed of, otherwise DDS will
// DDS will fail to start. // fail to start.
vmService.dispose(); vmService.dispose();
return Uri.parse('http://localhost:$hostPort'); return Uri.parse('http://localhost:$hostPort');
} }
...@@ -184,6 +187,10 @@ class FallbackDiscovery { ...@@ -184,6 +187,10 @@ class FallbackDiscovery {
// No action, we might have failed to connect. // No action, we might have failed to connect.
firstException ??= err; firstException ??= err;
_logger.printTrace(err.toString()); _logger.printTrace(err.toString());
} finally {
// This vmService instance must be disposed of, otherwise DDS will
// fail to start.
vmService?.dispose();
} }
// No exponential backoff is used here to keep the amount of time the // No exponential backoff is used here to keep the amount of time the
......
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