gianm commented on code in PR #14271:
URL: https://github.com/apache/druid/pull/14271#discussion_r1200752760
##########
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:
> Always look at the cause of UnableToExecuteStatementException to decide if
it is transient. (this takes care of the mysql driver case)
Sounds good to me.
> For SQLTransientConnectionException, check the exception chain. If any of
the causes is a SQLNonTransientException exception, the overall exception is
also non-transient.
I'm a little worried about collateral damage from the strategy of looking
for `SQLNonTransientException` under ` SQLTransientConnectionException`. How
about a more targeted change where we look for
`org.mariadb.jdbc.internal.util.exceptions.MaxAllowedPacketException`
specifically? I'd be OK with that.
--
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]