[ 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)