-
Notifications
You must be signed in to change notification settings - Fork 125
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[Question] Dio interceptor with retry not triggered when timeout() is invoked #442
Comments
you need to listen to the request to execute it and you can use the error link for single retries: https://pub.dev/packages/gql_error_link |
@knaeckeKami, I updated my code by modifying the dioLink and removing the interceptor but sadly it still does not work. Am i missing something here? Really need your guidance. Thanks man. /// dioLink
_dioLink = Link.from([
ErrorLink(
onException: (request, forward, exception) async* {
/// Still does not print ???
/// Need help !!!
print('VERIFY_PRINT: 1');
if (exception is DioLinkTimeoutException) {
print('VERIFY_PRINT: 2');
yield* forward(request);
return;
}
throw exception;
},
),
DioLink(
baseUrl,
client: _dio,
),
]);
/// Request onTimeout function body
final requestOptions = RequestOptions();
final error = DioLinkTimeoutException(
type: DioExceptionType.connectionTimeout,
originalException: DioException.connectionTimeout(
timeout: duration,
requestOptions: requestOptions,
),
originalStackTrace: null,
);
sink.addError(error);
sink.close();
/// Client
final req = OperationRequest(...);
final response = ferryClient.request(req).first;
/// TODO: Check response |
please share a minimal reproducible example of what you're trying to do |
Hello, @knaeckeKami I created a repository for this alongside with the configs that I have. |
Yeah, that's not going to work. Generally, don't extend the client class. If you add the error in a subclass of the client after the request() method, the Dio links have no chance of handling it, they already ran at this point. If you want to test timeout, you can replace the diolink with a custom link that just throws a timeout error for every request. |
Hello, @knaeckeKami, i have this very basic app that uses dio and gql.
My problem is that the interceptor for retry is not being triggered.
I just wanted to ask if you have any idea of what am i doing wrong?
Also, would greatly appreciate if you could point me into some examples
on how to properly implement this Retry? Thanks!
Please refer to the code below.
The text was updated successfully, but these errors were encountered: