Skip to content

Commit 95733f6

Browse files
committed
Updating handler.dart
Adding stack trace to more calls of _sendError by using records. This should allow for more accurate logging and debugging of issues in custom errorHandlers.
1 parent dae290c commit 95733f6

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

lib/src/server/handler.dart

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -184,56 +184,56 @@ class ServerHandler extends ServiceCall {
184184
_service = service!;
185185
_descriptor = descriptor;
186186

187-
final error = await _applyInterceptors();
187+
final (error, trace) = await _applyInterceptors();
188188
if (error != null) {
189-
_sendError(error);
189+
_sendError(error, trace);
190190
_sinkIncoming();
191191
return;
192192
}
193193

194194
_startStreamingRequest();
195195
}
196196

197-
GrpcError? _onMetadata() {
197+
(GrpcError?, StackTrace?) _onMetadata() {
198198
try {
199199
_service.$onMetadata(this);
200-
} on GrpcError catch (error) {
201-
return error;
202-
} catch (error) {
200+
} on GrpcError catch (error, trace) {
201+
return (error, trace);
202+
} catch (error, trace) {
203203
final grpcError = GrpcError.internal(error.toString());
204-
return grpcError;
204+
return (grpcError, trace);
205205
}
206-
return null;
206+
return (null, null);
207207
}
208208

209-
Future<GrpcError?> _applyInterceptors() async {
209+
Future<(GrpcError?, StackTrace?)> _applyInterceptors() async {
210210
try {
211211
for (final interceptor in _interceptors) {
212212
final error = await interceptor(this, _descriptor);
213213
if (error != null) {
214-
return error;
214+
return (error, null);
215215
}
216216
}
217-
} catch (error) {
217+
} catch (error, trace) {
218218
final grpcError = GrpcError.internal(error.toString());
219-
return grpcError;
219+
return (grpcError, trace);
220220
}
221-
return null;
221+
return (null, null);
222222
}
223223

224224
void _startStreamingRequest() {
225225
final requests = _descriptor.createRequestStream(_incomingSubscription!);
226226
_requests = requests;
227227
_incomingSubscription!.onData(_onDataActive);
228228

229-
final error = _onMetadata();
229+
final (error, trace) = _onMetadata();
230230
if (error != null) {
231231
if (!requests.isClosed) {
232232
requests
233233
..addError(error)
234234
..close();
235235
}
236-
_sendError(error);
236+
_sendError(error, trace);
237237
_onDone();
238238
_stream.terminate();
239239
return;

0 commit comments

Comments
 (0)