[ 
https://issues.apache.org/jira/browse/HBASE-26021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17369555#comment-17369555
 ] 

Viraj Jasani commented on HBASE-26021:
--------------------------------------

Thanks [~reidchan].
{quote}since we backported a change it makes more sense to backport its revert 
too: 
[commit|https://github.com/apache/hbase/commit/bdb0cc8808af7c3d08af4a506f34b8341726b58e]
 . However, if someone has already upgraded to 1.7.0, has this ship sailed? Do 
we need your fix on this issue instead?
{quote}
I agree that it makes more sense to backport revert commit as well, but it 
seems it's going to take some time because not only revert is not directly 
applicable but also we seem to have multiple revert commits related to 
TableDescriptor in 2.0.
{quote}Based on the history, this 
[commit|https://github.com/apache/hbase/commit/dec0ec229070465ce5a1f7381366a82278149f06]
 (HBASE-13016) cleaned up TableState.State from HBaseProto.TableDescriptor and 
finally this 
[commit|https://github.com/apache/hbase/commit/bdb0cc8808af7c3d08af4a506f34b8341726b58e]
 removed TableDescriptor itself from HBaseProtos (HBASE-15467: Remove 1.x/2.0 
TableDescriptor incompatibility).
{quote}
For instance, here I see two revert commits already. It's going to be bit tough 
to incorporate all reverts in short time.

On the other hand, as per my testing, the above mentioned simple patch works 
well to fix deserialization and so far things look good with it. Also, since 
1.7.0 is already shipped, so perhaps better to consider this fix for 1.7.0.1 
(or 1.7.1) than multiple revert backports that themselves might introduce more 
edge cases, meaning they would require rigorous testing for sure.

Anyways let me create a PR to get a QA on this patch and in the meanwhile we 
can wait for more opinions.

> HBase 1.7 to 2.4 upgrade issue due to incompatible deserialization
> ------------------------------------------------------------------
>
>                 Key: HBASE-26021
>                 URL: https://issues.apache.org/jira/browse/HBASE-26021
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 1.7.0, 2.4.4
>            Reporter: Viraj Jasani
>            Priority: Major
>         Attachments: Screenshot 2021-06-22 at 12.54.21 PM.png, Screenshot 
> 2021-06-22 at 12.54.30 PM.png
>
>
> As of today, if we bring up HBase cluster using branch-1 and upgrade to 
> branch-2.4, we are facing issue while parsing namespace from HDFS fileinfo. 
> Instead of "*hbase:meta*" and "*hbase:namespace*", parsing using ProtobufUtil 
> seems to be producing "*\n hbase meta*" and "*\n hbase namespace*"
> {code:java}
> 2021-06-22 00:05:56,611 INFO  
> [RpcServer.priority.RWQ.Fifo.read.handler=3,queue=1,port=16025] 
> regionserver.RSRpcServices: Open hbase:meta,,1.1588230740
> 2021-06-22 00:05:56,648 INFO  
> [RpcServer.priority.RWQ.Fifo.read.handler=5,queue=1,port=16025] 
> regionserver.RSRpcServices: Open 
> hbase:namespace,,1624297762817.396cb6cc00cd4334cb1ea3a792d7529a.
> 2021-06-22 00:05:56,759 ERROR 
> [RpcServer.priority.RWQ.Fifo.read.handler=5,queue=1,port=16025] 
> ipc.RpcServer: Unexpected throwable object
> java.lang.IllegalArgumentException: Illegal character <
> > at 0. Namespaces may only contain 'alphanumeric characters' from any 
> > language and digits:
> ^Ehbase^R       namespace
>         at 
> org.apache.hadoop.hbase.TableName.isLegalNamespaceName(TableName.java:246)
>         at 
> org.apache.hadoop.hbase.TableName.isLegalNamespaceName(TableName.java:220)
>         at org.apache.hadoop.hbase.TableName.<init>(TableName.java:348)
>         at 
> org.apache.hadoop.hbase.TableName.createTableNameIfNecessary(TableName.java:385)
>         at org.apache.hadoop.hbase.TableName.valueOf(TableName.java:508)
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toTableName(ProtobufUtil.java:2292)
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toTableDescriptor(ProtobufUtil.java:2937)
>         at 
> org.apache.hadoop.hbase.client.TableDescriptorBuilder$ModifyableTableDescriptor.parseFrom(TableDescriptorBuilder.java:1625)
>         at 
> org.apache.hadoop.hbase.client.TableDescriptorBuilder$ModifyableTableDescriptor.access$200(TableDescriptorBuilder.java:597)
>         at 
> org.apache.hadoop.hbase.client.TableDescriptorBuilder.parseFrom(TableDescriptorBuilder.java:320)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.readTableDescriptor(FSTableDescriptors.java:511)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorFromFs(FSTableDescriptors.java:496)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorFromFs(FSTableDescriptors.java:482)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.get(FSTableDescriptors.java:210)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.openRegion(RSRpcServices.java:2112)
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos$AdminService$2.callBlockingMethod(AdminProtos.java:35218)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:395)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
> 2021-06-22 00:05:56,759 ERROR 
> [RpcServer.priority.RWQ.Fifo.read.handler=3,queue=1,port=16025] 
> ipc.RpcServer: Unexpected throwable object
> java.lang.IllegalArgumentException: Illegal character <
> > at 0. Namespaces may only contain 'alphanumeric characters' from any 
> > language and digits:
> ^Ehbase^R^Dmeta
>         at 
> org.apache.hadoop.hbase.TableName.isLegalNamespaceName(TableName.java:246)
>         at 
> org.apache.hadoop.hbase.TableName.isLegalNamespaceName(TableName.java:220)
>         at org.apache.hadoop.hbase.TableName.<init>(TableName.java:348)
>         at 
> org.apache.hadoop.hbase.TableName.createTableNameIfNecessary(TableName.java:385)
>         at org.apache.hadoop.hbase.TableName.valueOf(TableName.java:508)
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toTableName(ProtobufUtil.java:2292)
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toTableDescriptor(ProtobufUtil.java:2937)
>         at 
> org.apache.hadoop.hbase.client.TableDescriptorBuilder$ModifyableTableDescriptor.parseFrom(TableDescriptorBuilder.java:1625)
>         at 
> org.apache.hadoop.hbase.client.TableDescriptorBuilder$ModifyableTableDescriptor.access$200(TableDescriptorBuilder.java:597)
>         at 
> org.apache.hadoop.hbase.client.TableDescriptorBuilder.parseFrom(TableDescriptorBuilder.java:320)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.readTableDescriptor(FSTableDescriptors.java:511)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorFromFs(FSTableDescriptors.java:496)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptorFromFs(FSTableDescriptors.java:482)
>         at 
> org.apache.hadoop.hbase.util.FSTableDescriptors.get(FSTableDescriptors.java:210)
>         at 
> org.apache.hadoop.hbase.regionserver.RSRpcServices.openRegion(RSRpcServices.java:2112)
>         at 
> org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos$AdminService$2.callBlockingMethod(AdminProtos.java:35218)
>         at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:395)
>         at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
>         at 
> org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318){code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to