[
https://issues.apache.org/jira/browse/PHOENIX-4579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16409992#comment-16409992
]
ASF GitHub Bot commented on PHOENIX-4579:
-----------------------------------------
Github user JamesRTaylor commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/295#discussion_r176506809
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
---
@@ -2405,16 +2413,26 @@ public Void call() throws Exception {
openConnection();
hConnectionEstablished = true;
boolean isDoNotUpgradePropSet =
UpgradeUtil.isNoUpgradeSet(props);
+ boolean doesSystemCatalogAlreadyExist = false;
--- End diff --
The flow of this code is very confusing. Let's do the compatibility check
only once in ensureTableCreated by making the following changes:
- do not call ensureTableCreated from createTable if the table is a system
table
- call ensureTableCreated instead here and remove this entire try block
- do all checks required in ensureTableCreated where we already determine
if the table exists or not
- in ensureTableCreated, if SYSTEM.CATALOG doesn't exist and
!isAutoUpgradeEnabled or isDoNotUpgradePropSet, then throw our standard
UpgradeRequiredException immediately without creating system catalog metadata.
- the only call to checkClientServerCompatibility should be in
ensureTableCreated (when isMetaTable is true)
- make sure to be defensive in the creation of the SYSTEM namespace and
moving of SYSTEM tables as it's possible that multiple clients may be
attempting to do that.
I think this improve the maintainability of this code (and fix this issue
too).
> Add a config to conditionally create Phoenix meta tables on first client
> connection
> -----------------------------------------------------------------------------------
>
> Key: PHOENIX-4579
> URL: https://issues.apache.org/jira/browse/PHOENIX-4579
> Project: Phoenix
> Issue Type: New Feature
> Reporter: Mujtaba Chohan
> Assignee: Chinmay Kulkarni
> Priority: Major
> Attachments: PHOENIX-4579.patch
>
>
> Currently we create/modify Phoenix meta tables on first client connection.
> Adding a property to make it configurable (with default true as it is
> currently implemented).
> With this property set to false, it will avoid lockstep upgrade requirement
> for all clients when changing meta properties using PHOENIX-4575 as this
> property can be flipped back on once all the clients are upgraded.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)