This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2 by this push:
new 3eda33a HBASE-22681 The 'assert highestUnsyncedTxid <
entry.getTxid();' in AbstractFWAL.append may fail when using AsyncFSWAL (#376)
3eda33a is described below
commit 3eda33a0489c27627df790dea559511e3c6c7a61
Author: Duo Zhang <[email protected]>
AuthorDate: Sat Jul 13 22:11:39 2019 +0800
HBASE-22681 The 'assert highestUnsyncedTxid < entry.getTxid();' in
AbstractFWAL.append may fail when using AsyncFSWAL (#376)
Signed-off-by: Zheng Hu <[email protected]>
---
.../java/org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.java
index 0fe67f6..8482809 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AsyncFSWAL.java
@@ -439,7 +439,11 @@ public class AsyncFSWAL extends AbstractFSWAL<AsyncWriter>
{
newHighestProcessedAppendTxid = entry.getTxid();
iter.remove();
if (appended) {
- unackedAppends.addLast(entry);
+ // This is possible, when we fail to sync, we will add the
unackedAppends back to
+ // toWriteAppends, so here we may get an entry which is already in the
unackedAppends.
+ if (unackedAppends.isEmpty() || unackedAppends.peekLast().getTxid() <
entry.getTxid()) {
+ unackedAppends.addLast(entry);
+ }
if (writer.getLength() - fileLengthAtLastSync >= batchSize) {
break;
}