Unverified Commit c0d5fd23 authored by Dan Field's avatar Dan Field Committed by GitHub

Handle notification errors (#31868)

parent 5e77d650
......@@ -934,9 +934,18 @@ void restoreVmServiceConnectFunction() {
}
void _unhandledJsonRpcError(dynamic error, dynamic stack) {
if (error is rpc.RpcException) {
final rpc.RpcException rpcException = error;
if (rpcException.data != null && rpcException.data['id'] == null) {
// This can happen, e.g., if a client tries to call us before methods have
// been registered, but the client doesn't care for a response.
_log.trace('RPC client sent a notification that resulted in an error:\n$error');
return;
}
assert(false, 'json_rpc_2 failed to send an exception back to the client.');
}
_log.trace('Unhandled RPC error:\n$error\n$stack');
// TODO(dnfield): https://github.com/flutter/flutter/issues/31813
// assert(false);
assert(false);
}
/// Waits for a real Dart VM service to become available, then connects using
......
......@@ -237,6 +237,16 @@ class VMService {
}
static void _unhandledError(dynamic error, dynamic stack) {
if (error is rpc.RpcException) {
final rpc.RpcException rpcException = error;
if (rpcException.data != null && rpcException.data['id'] == null) {
// This can happen, e.g., if a client tries to call us before methods have
// been registered, but the client doesn't care for a response.
logger.printTrace('RPC client sent a notification that resulted in an error:\n$error');
return;
}
assert(false, 'json_rpc_2 failed to send an exception back to the client.');
}
logger.printTrace('Error in internal implementation of JSON RPC.\n$error\n$stack');
assert(false);
}
......
......@@ -33,6 +33,14 @@ RpcPeerConnectionFunction fuchsiaVmServiceConnectionFunction = _waitAndConnect;
void _unhandledJsonRpcError(dynamic error, dynamic stack) {
if (error is json_rpc.RpcException) {
final json_rpc.RpcException rpcException = error;
if (rpcException.data != null && rpcException.data['id'] == null) {
// This can happen, e.g., if a client tries to call us before methods have
// been registered, but the client doesn't care for a response.
return;
}
}
_log.fine('Error in internalimplementation of JSON RPC.\n$error\n$stack');
}
......
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