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

stack commented on HBASE-20237:
-------------------------------

Change is small. Just add back the getClosest flags to the Get protobuf and 
then check for them being set at the front door; if they are throw 
UnknownProtocolException. I put the patch in place and then tried connection to 
hbase with an old OpenTSDB and got the below:

{code}
2018-03-20 22:40:09,231 INFO  [main] TSDB: Flushing compaction queue
2018-03-20 22:40:09,233 INFO  [main] HBaseClient: Channel [id: 0xd9575594, 
/127.0.0.1:56289 => /127.0.0.1:56264] is disconnecting: [id: 0xd9575594, 
/127.0.0.1:56289 => /127.0.0.1:56264] DISCONNECT
2018-03-20 22:40:09,233 INFO  [main] HBaseClient: Lost connection with the 
.META. region
2018-03-20 22:40:09,236 INFO  [main] TSDB: Completed shutting down the TSDB
Exception in thread "main" java.lang.RuntimeException: Initialization failed
        at net.opentsdb.tools.TSDMain.main(TSDMain.java:237)
Caused by: com.stumbleupon.async.DeferredGroupException: At least one of the 
Deferreds failed, first exception:
        at com.stumbleupon.async.DeferredGroup.done(DeferredGroup.java:169)
        at 
com.stumbleupon.async.DeferredGroup.recordCompletion(DeferredGroup.java:142)
        at com.stumbleupon.async.DeferredGroup.access$000(DeferredGroup.java:36)
        at 
com.stumbleupon.async.DeferredGroup$1Notify.call(DeferredGroup.java:82)
        at com.stumbleupon.async.Deferred.doCall(Deferred.java:1278)
        at com.stumbleupon.async.Deferred.runCallbacks(Deferred.java:1257)
        at com.stumbleupon.async.Deferred.access$300(Deferred.java:430)
        at com.stumbleupon.async.Deferred$Continue.call(Deferred.java:1366)
        at com.stumbleupon.async.Deferred.doCall(Deferred.java:1278)
        at com.stumbleupon.async.Deferred.runCallbacks(Deferred.java:1257)
        at com.stumbleupon.async.Deferred.handleContinuation(Deferred.java:1313)
        at com.stumbleupon.async.Deferred.doCall(Deferred.java:1284)
        at com.stumbleupon.async.Deferred.runCallbacks(Deferred.java:1257)
        at com.stumbleupon.async.Deferred.callback(Deferred.java:1005)
        at org.hbase.async.HBaseRpc.callback(HBaseRpc.java:712)
        at org.hbase.async.RegionClient.decode(RegionClient.java:1536)
        at org.hbase.async.RegionClient.decode(RegionClient.java:88)
        at 
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500)
        at 
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:485)
        at 
org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
        at org.hbase.async.RegionClient.handleUpstream(RegionClient.java:1226)
        at 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        at 
org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        at 
org.jboss.netty.channel.SimpleChannelHandler.messageReceived(SimpleChannelHandler.java:142)
        at 
org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88)
        at 
org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler.handleUpstream(IdleStateAwareChannelHandler.java:36)
        at 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        at 
org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
        at 
org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:294)
        at 
org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
        at 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
        at 
org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
        at 
org.hbase.async.HBaseClient$RegionClientPipeline.sendUpstream(HBaseClient.java:3678)
        at 
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
        at 
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
        at 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
        at 
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
        at 
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
        at 
org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
        at 
org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.hbase.async.RemoteException: 
org.apache.hadoop.hbase.exceptions.UnknownProtocolException: Support for 
getClosestRowBefore was removed in hbase-2.0.0
        at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.get(RSRpcServices.java:2440)
        at 
org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:41791)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:409)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:130)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:324)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:304)

        at org.hbase.async.RegionClient.makeException(RegionClient.java:1758)
        at org.hbase.async.RegionClient.decodeException(RegionClient.java:1776)
        at org.hbase.async.RegionClient.decode(RegionClient.java:1488)
        at org.hbase.async.RegionClient.decode(RegionClient.java:88)
        at 
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500)
        at 
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)
        ... 26 more
{code}

> Put back getClosestRowBefore and throw UnsupportedOperation instead... for 
> asynchbase client
> --------------------------------------------------------------------------------------------
>
>                 Key: HBASE-20237
>                 URL: https://issues.apache.org/jira/browse/HBASE-20237
>             Project: HBase
>          Issue Type: Bug
>          Components: compatibility, Operability
>            Reporter: stack
>            Assignee: stack
>            Priority: Major
>             Fix For: 2.0.0
>
>
> asychbase can work against all hbase versions. This fact has saved us a few 
> times; e.g. LINE were able to migrate from 0.94 to 1.2 going in part via 
> asynchbase and its ability to work against all servers.
> hbase2 breaks this ability of asynchbase. There is nothing for asynchbase to 
> figure definitively that it is talking to an hbase2 server (See HBASE-20225). 
> Lets add back something it can leverage.  HBASE-13954 did a nice job purging 
> getClosestRowBefore. Lets put back an RPC stuff that throws an exception if 
> it gets called. Thats enough for asynchbase.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to