kfaraz commented on code in PR #14271:
URL: https://github.com/apache/druid/pull/14271#discussion_r1200425479
##########
server/src/main/java/org/apache/druid/metadata/SQLMetadataConnector.java:
##########
@@ -165,14 +166,21 @@ public <T> T retryTransaction(final
TransactionCallback<T> callback, final int q
public final boolean isTransientException(Throwable e)
{
- return e != null && (e instanceof RetryTransactionException
- || e instanceof SQLTransientException
- || e instanceof SQLRecoverableException
- || e instanceof UnableToObtainConnectionException
- || e instanceof UnableToExecuteStatementException
- || connectorIsTransientException(e)
- || (e instanceof SQLException &&
isTransientException(e.getCause()))
- || (e instanceof DBIException &&
isTransientException(e.getCause())));
+ if (e == null) {
+ return false;
+ }
+ if (e.getMessage() != null &&
e.getMessage().contains(MAX_ALLOWED_PACKET_ERROR)) {
Review Comment:
So there are two things we can do here:
- Always look at the cause of `UnableToExecuteStatementException` to decide
if it is transient. (this takes care of the mysql driver case)
- For `SQLTransientConnectionException`, check the exception chain. If any
of the causes is a `SQLNonTransientException` exception, the overall exception
is also non-transient.
Ideally, the MariaDB driver should not have not qualified this exception as
transient in the first place.
@gianm , let me know what you think.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]