question

wederbrand avatar image
wederbrand asked Erick Ramirez commented

Is DriverTimeoutException not handled by the DefaultRetryPolicy in Java driver 4.6.1?

I'm reading the documentation to try to understand if the DefaultRetryPolicy handles DriverTimeoutExceptions but, from what I understand, it doesn't.

If the controller is under heavy temporary GC, or the network has a glitch, it would make sense to try the same query againsta another node in the cluster.

Am I wrong? How could I configure the driver to retry idempotent queries if this happens?

java driver
10 |1000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

1 Answer

Erick Ramirez avatar image
Erick Ramirez answered Erick Ramirez commented

You are correct. DriverTimeoutException is not handled by the DefaultRetryPolicy in version 4 of the Java driver.

DriverTimeoutException isn't retried because it will break the guarantee that client requests are completed within the configured client timeout. For example if you've set the client-side timeout to 5 seconds and the coordinator does not respond within 5 seconds, there is no opportunity to retry since the maximum timeout has already been reached.

If the request is retried a second time, it will potentially take another 5 seconds and the request instead blows out to 10 seconds which is way beyond the maximum 5-second timeout. For some further context, see JAVA-2921.

If you would like to retry the request, we recommend you use speculative query execution so that the request is pre-emptively run on another coordinator if the current coordinator is taking too long to respond. For details, see the Speculative query execution page of Java driver 4.6. Cheers!

2 comments Share
10 |1000

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

wederbrand avatar image wederbrand commented ·

Great answer. I get that the client timeout is the actual timeout used until the driver throws DriverTimeoutException. It makes sense.

I just added the speculative retry so I guess that will also get rid fo the DriverTimeExceptions.

Thanks.

0 Likes 0 ·
Erick Ramirez avatar image Erick Ramirez ♦♦ wederbrand commented ·

Happy to help. Cheers!

0 Likes 0 ·