You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Viraj Jasani (Jira)" <ji...@apache.org> on 2020/10/12 14:07:00 UTC
[jira] [Assigned] (PHOENIX-6185) OPERATION_TIMED_OUT#newException
method swallows the exception message and root cause exception.
[ https://issues.apache.org/jira/browse/PHOENIX-6185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Viraj Jasani reassigned PHOENIX-6185:
-------------------------------------
Assignee: Viraj Jasani
> OPERATION_TIMED_OUT#newException method swallows the exception message and root cause exception.
> ------------------------------------------------------------------------------------------------
>
> Key: PHOENIX-6185
> URL: https://issues.apache.org/jira/browse/PHOENIX-6185
> Project: Phoenix
> Issue Type: Improvement
> Components: core
> Affects Versions: 4.14.3
> Reporter: Rushabh Shah
> Assignee: Viraj Jasani
> Priority: Major
>
> BaseResultIterators#getIterators encountered TimeoutException [here|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java#L1383-L1389]
> {code:java}
> } catch (TimeoutException e) {
> context.getOverallQueryMetrics().queryTimedOut();
> GLOBAL_QUERY_TIMEOUT_COUNTER.increment();
> // thrown when a thread times out waiting for the future.get() call to return
> toThrow = new SQLExceptionInfo.Builder(OPERATION_TIMED_OUT)
> .setMessage(". Query couldn't be completed in the allotted time: "
> + queryTimeOut + " ms").setRootCause(e).build().buildException();
> {code}
> It creates SQLExceptionInfo object with message indicating the timeout and the root cause exception.
> But [SQLExceptionCode#OPERATION_TIMED_OUT#newException|https://github.com/apache/phoenix/blob/master/phoenix-core/src/main/java/org/apache/phoenix/exception/SQLExceptionCode.java#L453-L459] ignores all that information and creates SQLException with just template message and loses the root cause exception also.
> {code:java}
> OPERATION_TIMED_OUT(6000, "TIM01", "Operation timed out.", new Factory() {
> @Override
> public SQLException newException(SQLExceptionInfo info) {
> return new SQLTimeoutException(OPERATION_TIMED_OUT.getMessage(),
> OPERATION_TIMED_OUT.getSQLState(), OPERATION_TIMED_OUT.getErrorCode());
> }
> }),
> {code}
> Instead it should create SQLTimeoutException from SQLExceptionInfo object.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)