You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "nkeywal (JIRA)" <ji...@apache.org> on 2012/06/20 12:18:44 UTC

[jira] [Resolved] (HBASE-6156) Improve multiop performances in HTable#flushCommits

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

nkeywal resolved HBASE-6156.
----------------------------

    Resolution: Fixed

Fixed in HBASE-5924
                
> Improve multiop performances in HTable#flushCommits
> ---------------------------------------------------
>
>                 Key: HBASE-6156
>                 URL: https://issues.apache.org/jira/browse/HBASE-6156
>             Project: HBase
>          Issue Type: Bug
>          Components: client
>    Affects Versions: 0.96.0
>            Reporter: nkeywal
>            Assignee: nkeywal
>            Priority: Minor
>             Fix For: 0.96.0
>
>
> This code:
> {noformat}
>   @Override
>   public void flushCommits() throws IOException {
>     try {
>       Object[] results = new Object[writeBuffer.size()];
>       try {
>         this.connection.processBatch(writeBuffer, tableName, pool, results);
>       } catch (InterruptedException e) {
>         throw new IOException(e);
>       } finally {
>         // mutate list so that it is empty for complete success, or contains
>         // only failed records results are returned in the same order as the
>         // requests in list walk the list backwards, so we can remove from list
>         // without impacting the indexes of earlier members
>         for (int i = results.length - 1; i>=0; i--) {
>           if (results[i] instanceof Result) {
>             // successful Puts are removed from the list here.
>             writeBuffer.remove(i);
>           }
>         }
>       }
>     } finally {
>       if (clearBufferOnFail) {
>         writeBuffer.clear();
>         currentWriteBufferSize = 0;
>       } else {
>         // the write buffer was adjusted by processBatchOfPuts
>         currentWriteBufferSize = 0;
>         for (Put aPut : writeBuffer) {
>           currentWriteBufferSize += aPut.heapSize();
>         }
>       }
>     }
>   }
> {noformat}
> Can be improved by:
> - not iterating on the list if clearBufferOnFail is set
> - not iterating the the list of there are no error
> - iterating on the list only once instead of two when we really have to.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira