phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Taylor (JIRA)" <>
Subject [jira] [Commented] (PHOENIX-4579) Add a config to conditionally create Phoenix meta tables on first client connection
Date Wed, 07 Feb 2018 23:22:00 GMT


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:
>             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

View raw message