[ 
https://issues.apache.org/jira/browse/HBASE-15198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anoop Sam John updated HBASE-15198:
-----------------------------------
    Attachment: HBASE-15198-0.98.patch

Failure in TestAsyncProcess because of not making required change in the test 
class. It uses custom connection impl.
Failure in TestOpenTableInCoprocessor is because of an existing bug in the code 
I can say. When some one added the codec explicitly in xml file, 
MultiServerCallable will use cell blocks.
In CoprocessorHConnection doing callBlockingMethod, we pass null as the 
CellScanner which will fail the op.  When the PayloadCarryingRpcController 
having some CellScanner with it, we have to pass that. Will fix in this patch

Failure in TestMultiParallel I can reproduce with out this patch.  When I 
committed HBASE-15214 ran that and was passing. Now also going to that commit 
the test passing.  The fail is because of some commit btw 
38ce707b2706c1c48b4f2386cc679f14081fc523 and 
b3fe2556641ad5b36caded1a995f09443d88ab5d.   FYI [~apurtell]  Let me check which 
commit broke this

> RPC client not using Codec and CellBlock for puts by default
> ------------------------------------------------------------
>
>                 Key: HBASE-15198
>                 URL: https://issues.apache.org/jira/browse/HBASE-15198
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.98.0
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>            Priority: Critical
>             Fix For: 2.0.0, 1.3.0, 1.2.1, 1.1.4, 1.0.4, 0.98.18
>
>         Attachments: HBASE-15198-0.98.patch, HBASE-15198-0.98.patch, 
> HBASE-15198-branch-1.0.patch, HBASE-15198-branch-1.1.patch, 
> HBASE-15198-branch-1.patch, HBASE-15198.patch, HBASE-15198_V2.patch, 
> HBASE-15198_V3.patch, HBASE-15198_V4.patch, HBASE-15198_V5.patch, 
> HBASE-15198_V6.patch, HBASE-15198_V6.patch
>
>
> For puts we use MultiServerCallable. Here to decide whether to use cellBlock 
> we have
> {code}
> private boolean isCellBlock() {
>     // This is not exact -- the configuration could have changed on us after 
> connection was set up
>     // but it will do for now.
>     HConnection connection = getConnection();
>     if (connection == null) return true; // Default is to do cellblocks.
>     Configuration configuration = connection.getConfiguration();
>     if (configuration == null) return true;
>     String codec = configuration.get(HConstants.RPC_CODEC_CONF_KEY, "");
>     return codec != null && codec.length() > 0;
>   }
> {code}
> By default in hbase-default.xml, we dont have any Codec being specified.
> Where as in AbstractRpcClient we have
> {code}
> Codec getCodec() {
>     // For NO CODEC, "hbase.client.rpc.codec" must be configured with empty 
> string AND
>     // "hbase.client.default.rpc.codec" also -- because default is to do cell 
> block encoding.
>     String className = conf.get(HConstants.RPC_CODEC_CONF_KEY, 
> getDefaultCodec(this.conf));
>     if (className == null || className.length() == 0) return null;
>     try {
>       return (Codec)Class.forName(className).newInstance();
>     } catch (Exception e) {
>       throw new RuntimeException("Failed getting codec " + className, e);
>     }
>   }
> .....
> public static String getDefaultCodec(final Configuration c) {
>     // If "hbase.client.default.rpc.codec" is empty string -- you can't set 
> it to null because
>     // Configuration will complain -- then no default codec (and we'll pb 
> everything).  Else
>     // default is KeyValueCodec
>     return c.get(DEFAULT_CODEC_CLASS, KeyValueCodec.class.getCanonicalName());
>   }
> {code}
> Our aim is to by def use Codec and it is KeyValueCodec.  
> The codec finding in MultiServerCallable to be same way as in 
> AbstractRpcClient and then only we will be doing cellblock stuff.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to