[ 
https://issues.apache.org/jira/browse/HBASE-15077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15092387#comment-15092387
 ] 

Hadoop QA commented on HBASE-15077:
-----------------------------------

| (x) *{color:red}-1 overall{color}* |
\\
\\
|| Vote || Subsystem || Runtime || Comment ||
| {color:red}-1{color} | {color:red} docker {color} | {color:red} 8m 18s 
{color} | {color:red} Docker failed to build yetus/hbase:date2016-01-11. 
{color} |
\\
\\
|| Subsystem || Report/Notes ||
| JIRA Patch URL | 
https://issues.apache.org/jira/secure/attachment/12781498/HBASE-15077_V3.patch |
| JIRA Issue | HBASE-15077 |
| Powered by | Apache Yetus 0.1.0   http://yetus.apache.org |
| Console output | 
https://builds.apache.org/job/PreCommit-HBASE-Build/61/console |


This message was automatically generated.



> Support OffheapKV write in compaction with out copying data on heap
> -------------------------------------------------------------------
>
>                 Key: HBASE-15077
>                 URL: https://issues.apache.org/jira/browse/HBASE-15077
>             Project: HBase
>          Issue Type: Sub-task
>          Components: regionserver, Scanners
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15077.patch, HBASE-15077_V2.patch, 
> HBASE-15077_V2.patch, HBASE-15077_V3.patch
>
>
> HBASE-14832  is not enough to handle this.  Doing the remaining needed here.
> {code}
>  if (cell instanceof ByteBufferedCell) {
> 890         out.writeShort(rowLen);
> 891         ByteBufferUtils.copyBufferToStream(out, ((ByteBufferedCell) 
> cell).getRowByteBuffer(),
> 892           ((ByteBufferedCell) cell).getRowPosition(), rowLen);
> 893         out.writeByte(fLen);
> 894         ByteBufferUtils.copyBufferToStream(out, ((ByteBufferedCell) 
> cell).getFamilyByteBuffer(),
> 895           ((ByteBufferedCell) cell).getFamilyPosition(), fLen);
> 896         ByteBufferUtils.copyBufferToStream(out, ((ByteBufferedCell) 
> cell).getQualifierByteBuffer(),
> 897           ((ByteBufferedCell) cell).getQualifierPosition(), qLen);
> {code}
> We have done this but it is not really helping us!  
> In ByteBufferUtils#copyBufferToStream
> {code}
> public static void copyBufferToStream(OutputStream out, ByteBuffer in,
>       int offset, int length) throws IOException {
>     if (in.hasArray()) {
>       out.write(in.array(), in.arrayOffset() + offset,
>           length);
>     } else {
>       for (int i = 0; i < length; ++i) {
>         out.write(toByte(in, offset + i));
>       }
>     }
>   }
>   {code}
> So for DBB it is so costly op writing byte by byte reading each to on heap.
> Even if we use writeByteBuffer(OutputStream out, ByteBuffer b, int offset, 
> int length), it won't help us as the underlying stream is a 
> ByteArrayOutputStream and so we will end up in copying.



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

Reply via email to