kfaraz commented on code in PR #14271:
URL: https://github.com/apache/druid/pull/14271#discussion_r1195918488
##########
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:
For MySQL, the SQLState seems to be `S1000`, error code is `0`, and the root
cause is `PacketTooBigException`.
```
org.skife.jdbi.v2.exceptions.CallbackFailedException:
org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException:
com.mysql.jdbc.PacketTooBigException:
Packet for query is too large (9952 > 1024).
You can change this value on the server by setting the
max_allowed_packet' variable.
```
The solution for this case is simply to check if the cause of
`UnableToExecuteStatementException` is transient, which we should always do
anyway because `UnableToExecuteStatementException` is not implicitly transient
by itself. Since `PacketTooBigException` is not transient by any of our other
rules, it would be categorized correctly.
--
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]