[
https://issues.apache.org/jira/browse/HBASE-8798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13697290#comment-13697290
]
Jerry He commented on HBASE-8798:
---------------------------------
Hi, Ted, Matteo
Thanks for the review.
The commands.rb has some existing logic that tries to 'rescue' some exceptions.
It will get more and more difficult to keep it generic artificially as we
evolve and add more ...
The approach to expand (instead of shrink) this logic is not a bad or ugly one
...
But your suggested solution is fine.
> Fix a minor bug in shell command with clone_snapshot table error
> ----------------------------------------------------------------
>
> Key: HBASE-8798
> URL: https://issues.apache.org/jira/browse/HBASE-8798
> Project: HBase
> Issue Type: Bug
> Components: shell, snapshots
> Affects Versions: 0.94.8, 0.95.1
> Reporter: Jerry He
> Assignee: Jerry He
> Priority: Minor
> Attachments: HBASE-8798-trunk.patch
>
>
> In HBase shell, the syntax for clone_snapshot is:
> hbase> clone_snapshot 'snapshotName', 'tableName'
> If the target table already exists, we'll get an error.
> For example:
> ------------------
> hbase(main):011:0> clone_snapshot 'mysnapshot1', 'TestTable'
> ERROR: Table already exists: mysnapshot1!
> Here is some help for this command:
> Create a new table by cloning the snapshot content.
> There're no copies of data involved.
> And writing on the newly created table will not influence the snapshot data.
> Examples:
> hbase> clone_snapshot 'snapshotName', 'tableName'
> ----------------------
> The bug is in the ERROR message:
> *ERROR: Table already exists: mysnapshot1!*
> We should output the table name, not the snapshot name.
> Currently, in command.rb, we have the output fixed as args.first for
> TableExistsException:
> {code}
> def translate_hbase_exceptions(*args)
> yield
> rescue org.apache.hadoop.hbase.exceptions.TableNotFoundException
> raise "Unknown table #{args.first}!"
> rescue org.apache.hadoop.hbase.exceptions.NoSuchColumnFamilyException
> valid_cols = table(args.first).get_all_columns.map { |c| c + '*' }
> raise "Unknown column family! Valid column names:
> #{valid_cols.join(", ")}"
> rescue org.apache.hadoop.hbase.exceptions.TableExistsException
> raise "Table already exists: #{args.first}!"
> end
> {code}
> This is fine with commands like 'create tableName ...' but not
> 'clone_snapshot snapshotName tableName'.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira