hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tsuna <tsuna...@gmail.com>
Subject Re: 1.5.0-SNAPSHOT conflicting with hbase-proto 0.96.x
Date Mon, 27 Jan 2014 02:36:27 GMT
Yes, I just ran into the same issue.  Sigh.  I guess one workaround is
to try to make AsyncHBase's jar show up first on the class path,
although that's not always as easy to do as it might sound.

I'm copying hbase-dev so that they are aware of the problem.  My trick
was ported to HBase in HBASE-9867, but it wasn't ported properly.  It
doesn't look like the zeroCopyGetBytes helper is used in HBase (I
checked 0.96, 0.98, and trunk).  So the best course of action seems to
be to fix the signature of the method in HBase.

I created an issue and proposed a patch for HBase here:
https://issues.apache.org/jira/browse/HBASE-10422

On Tue, Jan 14, 2014 at 1:49 AM,  <helllamer@gmail.com> wrote:
> * hbase-protocol-0.96.1.1-hadoop2.jar
> * asynchbase-1.5.0-SNAPSHOT.jar
>
> Both packages contains class
> "com.google.protobuf.ZeroCopyLiteralByteString", but with different API:
> * public static byte[] zeroCopyGetBytes(ByteString buf)
> * public static byte[] zeroCopyGetBytes(final LiteralByteString buf)
>
>
> When running a program with both dependencies, following error will occur in
> most cases:
>
> 14/01/14 13:45:41 ERROR async.RegionClient:1093 - Unexpected exception from
> downstream on [id: 0x33adfae4, /127.0.0.1:37648 => /127.0.0.1:34508]
> java.lang.NoSuchMethodError:
> com.google.protobuf.ZeroCopyLiteralByteString.zeroCopyGetBytes(Lcom/google/protobuf/ByteString;)[B
>     at org.hbase.async.Bytes.get(Bytes.java:297)
>     at org.hbase.async.KeyValue.fromCell(KeyValue.java:311)
>     at org.hbase.async.GetRequest.convertResult(GetRequest.java:514)
>     at org.hbase.async.GetRequest.extractResponse(GetRequest.java:496)
>     at
> org.hbase.async.RegionClient$1GetClosestRowBefore.deserialize(RegionClient.java:651)
>     at org.hbase.async.RegionClient.decode(RegionClient.java:1308)
>     at org.hbase.async.RegionClient.decode(RegionClient.java:89)
>     at
> org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:500)
>     at
> org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:435)
>     at org.hbase.async.RegionClient.handleUpstream(RegionClient.java:1080)
>     at
> org.hbase.async.HBaseClient$RegionClientPipeline.sendUpstream(HBaseClient.java:2652)
>     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
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>     at java.lang.Thread.run(Thread.java:744)
>
> It will be very simple to rename ZeroCopyLiteralByteString class in
> asynchbase into something different and republish new jar.
> Hope, someone may propose better solution.



-- 
Benoit "tsuna" Sigoure

Mime
View raw message