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

Solomon Duskis updated HBASE-12802:
-----------------------------------
    Description: 
It looks like there are a lot of places where flushCommits() are called on 
tables that do not have autoFlush turned on.  That might be a legacy concern 
from pre-autoFlush days.  HBASE-12728 will likely result in removing the 
flushCommits() method from Table.  The patch for this issue should remove all 
unnecessary calls to flushCommit() to prepare for the full fix.

flushCommits() are only necessary after a setAutoFlushTo(false) is called.  
Here's the relevant code from HTable.java:

{code:title=HTable.java|borderStyle=solid}
  @Override
  public void put(final Put put)
      throws InterruptedIOException, RetriesExhaustedWithDetailsException {
    doPut(put);
    if (autoFlush) {
      flushCommits();
    }
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void put(final List<Put> puts)
      throws InterruptedIOException, RetriesExhaustedWithDetailsException {
    for (Put put : puts) {
      doPut(put);
    }
    if (autoFlush) {
      flushCommits();
    }
  }
{code}

Puts have implicit flushCommits() calls when autoFlush is true. Deletes are not 
affected by autoFlush() and are not directly impacted by flushCommits() since 
deletes are not added to the writeAysncBuffer.

  was:It looks like there are a lot of places where flushCommits() are called 
on tables that do not have autoFlush turned on.  That might be a legacy concern 
from pre-autoFlush days.  HBASE-12728 will likely result in removing the 
flushCommits() method from Table.  The patch for this issue should remove all 
unnecessary calls to flushCommit() to prepare for the full fix..


> Remove unnecessary Table.flushCommits()
> ---------------------------------------
>
>                 Key: HBASE-12802
>                 URL: https://issues.apache.org/jira/browse/HBASE-12802
>             Project: HBase
>          Issue Type: Sub-task
>    Affects Versions: 1.0.0, 2.0.0
>            Reporter: Solomon Duskis
>            Assignee: Solomon Duskis
>         Attachments: HBASE-12802.patch, HBASE-12802B.patch
>
>
> It looks like there are a lot of places where flushCommits() are called on 
> tables that do not have autoFlush turned on.  That might be a legacy concern 
> from pre-autoFlush days.  HBASE-12728 will likely result in removing the 
> flushCommits() method from Table.  The patch for this issue should remove all 
> unnecessary calls to flushCommit() to prepare for the full fix.
> flushCommits() are only necessary after a setAutoFlushTo(false) is called.  
> Here's the relevant code from HTable.java:
> {code:title=HTable.java|borderStyle=solid}
>   @Override
>   public void put(final Put put)
>       throws InterruptedIOException, RetriesExhaustedWithDetailsException {
>     doPut(put);
>     if (autoFlush) {
>       flushCommits();
>     }
>   }
>   /**
>    * {@inheritDoc}
>    */
>   @Override
>   public void put(final List<Put> puts)
>       throws InterruptedIOException, RetriesExhaustedWithDetailsException {
>     for (Put put : puts) {
>       doPut(put);
>     }
>     if (autoFlush) {
>       flushCommits();
>     }
>   }
> {code}
> Puts have implicit flushCommits() calls when autoFlush is true. Deletes are 
> not affected by autoFlush() and are not directly impacted by flushCommits() 
> since deletes are not added to the writeAysncBuffer.



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

Reply via email to