phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas D'Silva (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (PHOENIX-5008) CQSI.init should not bubble up RetriableUpgradeException to client in case of an UpgradeRequiredException
Date Thu, 30 May 2019 18:41:13 GMT

     [ https://issues.apache.org/jira/browse/PHOENIX-5008?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Thomas D'Silva closed PHOENIX-5008.
-----------------------------------

Bulk closing jiras for the 4.14.2 relase.

> CQSI.init should not bubble up RetriableUpgradeException to client in case of an UpgradeRequiredException
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-5008
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5008
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: Chinmay Kulkarni
>            Assignee: Chinmay Kulkarni
>            Priority: Major
>             Fix For: 4.15.0, 5.1.0, 4.14.2
>
>         Attachments: PHOENIX-5008-4.x-HBase-1.3_addendum.patch, PHOENIX-5008.patch
>
>
> Inside _ConnectionQueryServicesImpl_._init_, if we catch a _RetriableUpgradeException_,
we re-throw this exception. In its caller methods for example, in _PhoenixDriver.getConnectionQueryServices_,
this is caught as a _SQLException_, and this fails the initialization of the ConnectionQueryServices
and removes the new CQS object from the cache. 
> In the case that the _RetriableUpgradeException_ is an instance of an _UpgradeNotRequiredException_
or an _UpgradeInProgressException_, this can only occur when we attempt to upgrade system
tables, either wrongly or concurrently when there is an ongoing attempt for the same. In this
case, it is fine to bubble the exception up to the end client and the client will subsequently
have to re-attempt to create a connection (calling CQS.init again).
> However, if the _RetriableUpgradeException_ is an instance of an _UpgradeRequiredException_,
 the end-client will never be able to get a connection and thus will never be able to manually
run "EXECUTE UPGRADE". In this case, instead of re-throwing the exception, we should log that
the client must manually run "EXECUTE UPGRADE" before being able to run any other commands
and let the CQS.init succeed. Thus, the client will get a connection which has "upgradeRequired"
set and this connection will fail for any query except "EXECUTE UPGRADE".



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message