You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Michael Stack (Jira)" <ji...@apache.org> on 2020/07/22 20:06:00 UTC

[jira] [Commented] (HBASE-21721) reduce write#syncs() times

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

Michael Stack commented on HBASE-21721:
---------------------------------------

 

 

As I read this change, if a difference between highestUnsyncedSequence and currentSequence post-sync, then the syncfutures inside this difference will be released but their sync may not have come in so yes, less syncs but our accounting will be off. Please correct me if I have it wrong.

 

Code is different now in FSHLog and default is async WAL; is this needed there?

 

Thanks [~Bo Cui]

> reduce write#syncs() times
> --------------------------
>
>                 Key: HBASE-21721
>                 URL: https://issues.apache.org/jira/browse/HBASE-21721
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 1.3.1, 2.1.1, master, 2.2.3
>            Reporter: Bo Cui
>            Priority: Major
>
> the number of write#syncs can be reduced by updating the highestUnsyncedSequence:
> before write#sync(), get the current highestUnsyncedSequence 
> after write#sync, highestSyncedSequence=highestUnsyncedSequence
>  
> {code:title=FSHLog.java|borderStyle=solid}
> // Some comments here
> public void run()
> {
>     long currentSequence;
>       while (!isInterrupted()) {
>         int syncCount = 0;
>         try {
>           while (true) {
>             ...
>           try {
>             Trace.addTimelineAnnotation("syncing writer");
>             long unSyncedFlushSeq = highestUnsyncedSequence;
>             writer.sync();
>             Trace.addTimelineAnnotation("writer synced");
>             if( unSyncedFlushSeq > currentSequence ) currentSequence = unSyncedFlushSeq;
>             currentSequence = updateHighestSyncedSequence(currentSequence);
>           } catch (IOException e) {
>             LOG.error("Error syncing, request close of WAL", e);
>             lastException = e;
>           } catch (Exception e) {
>            ...
>     }
> }
> {code}
> Add code
>  long unSyncedFlushSeq = highestUnsyncedSequence;
>  if( unSyncedFlushSeq > currentSequence ) currentSequence = unSyncedFlushSeq;



--
This message was sent by Atlassian Jira
(v8.3.4#803005)