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

Agile BoardAttach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.8.0
    • 4.9.0, 4.8.2
    • None
    • None
    • 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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment