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