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)