Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-3432

Upgrade Phoenix 4.8.0 to 4.9.0 fails because of illegal characters in snapshot name

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 4.8.0
    • Fix Version/s: 4.9.0, 4.8.2
    • Labels:
      None
    • Environment:

      HBase 1.1.7, Phoenix 4.9.0 RC0

      Description

      Trying to upgrade 4.8.0 to 4.9.0, I did stop the all hbase services and upgraded Phoenix binary to 4.9.0 RC0 and then, restarted hbase services. actually I'm trying automatic upgrade using sqlline but it does not works as I expected.

      16/11/02 09:53:03 WARN query.ConnectionQueryServicesImpl: Successfully enabled SYSTEM:CATALOG after restoring using snapshot SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900 failed. 
      Error: java.lang.IllegalArgumentException: Illegal character code:58, <:> at 15. Snapshot qualifiers can only contain 'alphanumeric characters': i.e. [a-zA-Z_0-9-.]: SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900 (state=,code=0)
      java.sql.SQLException: java.lang.IllegalArgumentException: Illegal character code:58, <:> at 15. Snapshot qualifiers can only contain 'alphanumeric characters': i.e. [a-zA-Z_0-9-.]: SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.createSnapshot(ConnectionQueryServicesImpl.java:2843)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.upgradeSystemTables(ConnectionQueryServicesImpl.java:2524)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2427)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2361)
      	at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2361)
      	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.connect(Commands.java:1064)
      	at sqlline.Commands.connect(Commands.java:996)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:38)
      	at sqlline.SqlLine.dispatch(SqlLine.java:809)
      	at sqlline.SqlLine.initArgs(SqlLine.java:588)
      	at sqlline.SqlLine.begin(SqlLine.java:661)
      	at sqlline.SqlLine.start(SqlLine.java:398)
      	at sqlline.SqlLine.main(SqlLine.java:291)
      Caused by: java.lang.IllegalArgumentException: Illegal character code:58, <:> at 15. Snapshot qualifiers can only contain 'alphanumeric characters': i.e. [a-zA-Z_0-9-.]: SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900
      	at org.apache.hadoop.hbase.TableName.isLegalTableQualifierName(TableName.java:196)
      	at org.apache.hadoop.hbase.TableName.isLegalTableQualifierName(TableName.java:154)
      	at org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils.assertSnapshotRequestIsValid(ClientSnapshotDescriptionUtils.java:42)
      	at org.apache.hadoop.hbase.client.HBaseAdmin.takeSnapshotAsync(HBaseAdmin.java:3568)
      	at org.apache.hadoop.hbase.client.HBaseAdmin.snapshot(HBaseAdmin.java:3516)
      	at org.apache.hadoop.hbase.client.HBaseAdmin.snapshot(HBaseAdmin.java:3474)
      	at org.apache.hadoop.hbase.client.HBaseAdmin.snapshot(HBaseAdmin.java:3393)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.createSnapshot(ConnectionQueryServicesImpl.java:2839)
      	... 22 more
      Error: org.apache.hadoop.hbase.snapshot.RestoreSnapshotException: Unable to find the table name for snapshot=SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900 (state=,code=0)
      java.sql.SQLException: org.apache.hadoop.hbase.snapshot.RestoreSnapshotException: Unable to find the table name for snapshot=SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.restoreFromSnapshot(ConnectionQueryServicesImpl.java:2882)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.upgradeSystemTables(ConnectionQueryServicesImpl.java:2816)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2427)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl$13.call(ConnectionQueryServicesImpl.java:2361)
      	at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2361)
      	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.connect(Commands.java:1064)
      	at sqlline.Commands.connect(Commands.java:996)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:38)
      	at sqlline.SqlLine.dispatch(SqlLine.java:809)
      	at sqlline.SqlLine.initArgs(SqlLine.java:588)
      	at sqlline.SqlLine.begin(SqlLine.java:661)
      	at sqlline.SqlLine.start(SqlLine.java:398)
      	at sqlline.SqlLine.main(SqlLine.java:291)
      Caused by: org.apache.hadoop.hbase.snapshot.RestoreSnapshotException: Unable to find the table name for snapshot=SNAPSHOT_SYSTEM:CATALOG_4.8.x_TO_4.9.0_20161102095256+0900
      	at org.apache.hadoop.hbase.client.HBaseAdmin.restoreSnapshot(HBaseAdmin.java:3707)
      	at org.apache.hadoop.hbase.client.HBaseAdmin.restoreSnapshot(HBaseAdmin.java:3654)
      	at org.apache.phoenix.query.ConnectionQueryServicesImpl.restoreFromSnapshot(ConnectionQueryServicesImpl.java:2877)
      	... 22 more
      sqlline version 1.2.0
      
      

      One thing to note here, We are using namespace mapping:

      <property>
      <name>phoenix.schema.isNamespaceMappingEnabled</name>
      <value>true</value>
      </property>
      

        Attachments

        1. PHOENIX-3432_v2.patch
          4 kB
          Samarth Jain
        2. PHOENIX-3432.patch
          5 kB
          Samarth Jain

          Activity

            People

            • Assignee:
              samarthjain Samarth Jain
              Reporter:
              warwithin YoungWoo Kim
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: