You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2018/03/21 05:51:00 UTC

[jira] [Commented] (HBASE-20237) Put back getClosestRowBefore and throw UnsupportedOperation instead... for asynchbase client

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