[ 
https://issues.apache.org/jira/browse/PHOENIX-4579?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16356224#comment-16356224
 ] 

James Taylor commented on PHOENIX-4579:
---------------------------------------

I think having this be purely driven from a property is a bit dangerous. If 
that property was set to false and a new client and server jar were deployed 
which required some upgrade, it wouldn't be performed, but instead stuff would 
just start to break. In addition to that (though less important), Phoenix 
already has a lot of configuration properties so if we can get away without 
adding another one, that'd be best.

Instead, I'd recommend we do the following:
- In ConnectionQueryServicesImpl.checkClientServerCompatibility(), add a new 
piece of information that gets returned from the getVersion RPC. In that call, 
we can (on the RS side) query the SYSTEM.CATALOG for the version information 
and return that back to the client.
- In ConnectionQueryServicesImpl.init(), if the actual system catalog version 
(i.e. the one from the server) is equal to 
MetaDataProtocol.MIN_SYSTEM_TABLE_TIMESTAMP, then we know no upgrade is 
required and we can skip the create table call for system catalog. We should 
think about the other system tables - maybe they each need their own 
MIN_SYSTEM_TABLE_TIMESTAMP value too? Maybe that could be follow on work.
- If we do change the hbase metadata of system catalog, then we'd have to make 
sure to increment MIN_SYSTEM_TABLE_TIMESTAMP, so that'd be kind of a new case. 
The empty key value of the SYSTEM.CATALOG row in the SYSTEM.CATALOG table could 
be updated in this case
- orthogonal to this change, it'd be good if we turned off 
{{phoenix.autoupgrade.enabled}} and required an EXECUTE UPGRADE to be run 
manually.

If we do the above, then we'd still catch the case where we have a new client 
against a new server where an upgrade is required.



> 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: Mujtaba Chohan
>            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)

Reply via email to