[ 
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)

Reply via email to