[
https://issues.apache.org/jira/browse/PHOENIX-3174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Samarth Jain updated PHOENIX-3174:
----------------------------------
Attachment: PHOENIX-3174.patch
Patch that provides the capability to prevent auto-upgrade from running
whenever a new client connects to the cluster. Auto upgrade can be disabled in
two ways:
1) On phoenix connection set NoUpgrade property to true.
2) In client side hbase-site.xml set phoenix.autoupgrade.disable to true (false
by default).
When a new client tries to connect with any of the two properties and the
upgrade hasn't been done yet, then he/she is thrown the following error:
{code}
Error: Connection not allowed! Cluster first needs to be upgraded from 4.7.x to
4.8.x. Please reconnect with a connection that doesn't have
PhoenixRuntime.NO_UPGRADE_ATTRIB property set. Alternatively, you can set
phoenix.autoupgrade.disabled to false as a global property for phoenix
connections in the client side hbase-site.xml. (state=INT13,code=2011)
org.apache.phoenix.query.ConnectionQueryServicesImpl$UpgradeRequiredException:
Connection not allowed! Cluster first needs to be upgraded from 4.7.x to 4.8.x.
Please reconnect with a connection that doesn't have
PhoenixRuntime.NO_UPGRADE_ATTRIB property set. Alternatively, you can set
phoenix.autoupgrade.disabled to false as a global property for phoenix
connections in the client side hbase-site.xml.
at
org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2468)
at
org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2267)
at
org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:78)
at
org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2267)
at
org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:232)
at
org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:147)
at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:202)
at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
at sqlline.Commands.close(Commands.java:906)
at sqlline.Commands.quit(Commands.java:870)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:36)
at sqlline.SqlLine.dispatch(SqlLine.java:803)
at sqlline.SqlLine.begin(SqlLine.java:681)
at sqlline.SqlLine.start(SqlLine.java:398)
at sqlline.SqlLine.main(SqlLine.java:292)
{code}
The patch also introduces a new phoenix connection property -
UpgradeUtil.NO_AUTO_UPGRADE_ATTRIB_INTERNAL that should be used by internal
phoenix code when no upgrade connections are needed.
[~jamestaylor], please review.
> Make minor upgrade a manual step
> --------------------------------
>
> Key: PHOENIX-3174
> URL: https://issues.apache.org/jira/browse/PHOENIX-3174
> Project: Phoenix
> Issue Type: Bug
> Reporter: James Taylor
> Assignee: Samarth Jain
> Attachments: PHOENIX-3174.patch
>
>
> Instead of automatically performing minor release upgrades to system tables
> in an automated manner (on first connection), we should make upgrade a
> separate manual step. If a newer client attempts to connect to a newer server
> without the upgrade step having occurred, we'd fail the connection.
> Though not as automated, this would give users more control and visibility
> into when an upgrade over system tables occurs.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)