Unverified Commit 12bbaba9 authored by Todd Volkert's avatar Todd Volkert Committed by GitHub

Do exponential backoff for all exceptions in VMService::defaultOpenChannel. (#16785)

We were trying to only catch WebSocketException, but in fact
SocketException can be thrown as well.
parent 060a1ade
......@@ -53,7 +53,7 @@ Future<StreamChannel<String>> _defaultOpenChannel(Uri uri) async {
attempts += 1;
try {
socket = await io.WebSocket.connect(uri.toString());
} on io.WebSocketException catch(e) {
} catch (e) {
printTrace('Exception attempting to connect to observatory: $e');
printTrace('This was attempt #$attempts. Will retry in $delay.');
await new Future<Null>.delayed(delay);
......
......@@ -4,17 +4,19 @@
import 'package:test/test.dart';
import 'package:flutter_tools/src/base/io.dart';
import 'package:flutter_tools/src/base/port_scanner.dart';
import 'package:flutter_tools/src/vmservice.dart';
import 'src/common.dart';
import 'src/context.dart';
void main() {
group('VMService', () {
test('fails connection eagerly in the connect() method', () async {
testUsingContext('fails connection eagerly in the connect() method', () async {
final int port = await const HostPortScanner().findAvailablePort();
expect(
VMService.connect(Uri.parse('http://localhost:$port')),
throwsA(const isInstanceOf<SocketException>()),
throwsToolExit(),
);
});
});
......
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