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

Duo Zhang commented on HBASE-26658:
-----------------------------------

It is all about semantic. Here unackedAppends means the WAL entries which are 
sent out but haven't been acked yet, so theoretically the only way to remove an 
entry from unackedAppends is to receive the ack.

If an entry is not in unackedAppends, we can make sure that it has not been 
written out yet, then we are free to tell upper layer that you operation is 
failed, but if it is already in unackedAppends, in the current design, there is 
no way to rollback then.

So removing entries from unackedAppends without receiving ack is dangerous. You 
need to give it another name and think really carefully about the whole 
architecture if you really want to do this. Maybe in the current code base it 
works, but you need to consider future, as the code  may be changed by others.

Thanks.

> AsyncFSWAL.unackedAppends should clear after  transfered to  
> AsyncFSWAL.toWriteAppends
> --------------------------------------------------------------------------------------
>
>                 Key: HBASE-26658
>                 URL: https://issues.apache.org/jira/browse/HBASE-26658
>             Project: HBase
>          Issue Type: Bug
>          Components: wal
>    Affects Versions: 3.0.0-alpha-2, 2.4.9
>            Reporter: chenglei
>            Assignee: chenglei
>            Priority: Major
>
> When {{ASyncFSWAL}} syncing to HDFS failed,  {{AsyncFSWAL.unackedAppends}} 
> are transfered to {{AsyncFSWAL.toWriteAppends}} to avoid data loss, but 
> {{AsyncFSWAL.unackedAppends}} itself is not cleared. I think there is no need 
> to continue retain them in {{AsyncFSWAL.unackedAppends}} because we would 
> open a new HDFS pipeline to resend the {{AsyncFSWAL.unackedAppends}}. 
> BTW :  It would also simplify the logic for fixing HBASE-25905, current fix 
> for HBASE-25905 is somewhat hard to understand. I think the problem to cause 
> HBASE-25905 is  that {{AsyncFSWAL.unackedAppends}}  could not exactly reflect 
> the *unacked* for current HDFS pipeline. If we clear 
> {{AsyncFSWAL.unackedAppends}} after transferring them to 
> {{AsyncFSWAL.toWriteAppends}}, HBASE-25905 could also avoid.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to