[
https://issues.apache.org/jira/browse/PHOENIX-5920?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17119081#comment-17119081
]
Geoffrey Jacoby commented on PHOENIX-5920:
------------------------------------------
I agree with [~ckulkarni] that the Client/Server compatability and namespace
checks need to be maintained. That means that, while I'm fine with
[~neha.gupta]'s proposal to skip the syscat upgrade check, I'm not sure it will
give us the ability to spin up a new CQSI while the HBase master's down. That's
because the client-server comptability check appears to need HBase APIs that
will sometimes need to hit the HMaster themselves (to invoke the Metadata
endpoint coproc, for example.)
Also noticed something strange: there's some logic in
checkClientServerCompatibility:1499-1510 that loads up a map of servers to
region locations (which will possibly also contact HMaster), but I don't see it
being used anywhere. That's somewhat costly and if it's not needed, we should
remove it.
> Skip SYSTEM TABLE checks while creating phoenix connection if client has set
> the config
> ---------------------------------------------------------------------------------------
>
> Key: PHOENIX-5920
> URL: https://issues.apache.org/jira/browse/PHOENIX-5920
> Project: Phoenix
> Issue Type: Bug
> Reporter: Neha Gupta
> Assignee: Neha Gupta
> Priority: Major
>
> Phoenix checks upgrade path even if client has set "DoNotUpgrade" config.
> When HMaster failover happens and Phoenix client creating phoenix connection,
> we get exception "org.apache.hadoop.hbase.PleaseHoldException: Master is
> initializing" because phoenix calls HBase admin apis to check if SYSTEM
> tables are in place and does not require an upgrade.
> [CQSI.init()|https://github.com/apache/phoenix/blob/aad583670ea821286ab5e2460ce0ab7255d474c4/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L3169]
> initiates creating systems table and
> [CQSI.ensureTableCreated|https://github.com/apache/phoenix/blob/aad583670ea821286ab5e2460ce0ab7255d474c4/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java#L1246]
> is checking if SYTEM table requires upgrade and calls hbaseAdminApis to
> perform this operation which fails if HMaster is not running. Can we honor
> the "DoNotUpgrade" config by client(By making an assumption that SYSTEM table
> is already up-to-date and phoenix client shouldn't perform any upgrades) and
> skip this upgrade checks ?
> EnsureTableCreated performs bunch of client-server compatibility checks like:
> 1.SYSTEM.CATALOG exists and its timestamp < MIN_SYSTEM_TABLE_TIMESTAMP
> 2.SYSTEM.CATALOG exists, but client and server-side namespace mapping is
> enabled so we need to migrate SYSTEM tables to the SYSTEM namespace
> 3.When an end-user uses the vanilla PhoenixDriver to create a connection and
> a requirement for upgrade is detected. In this case, the user should get a
> connection on which they are only able to run "EXECUTE UPGRADE".
--
This message was sent by Atlassian Jira
(v8.3.4#803005)