File tree Expand file tree Collapse file tree 1 file changed +16
-3
lines changed
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal Expand file tree Collapse file tree 1 file changed +16
-3
lines changed Original file line number Diff line number Diff line change @@ -343,12 +343,25 @@ private void syncFailed(long epochWhenSync, Throwable error) {
343343 }
344344 }
345345
346- private void syncCompleted (AsyncWriter writer , long processedTxid , long startTimeNs ) {
346+ private void syncCompleted (long epochWhenSync , AsyncWriter writer , long processedTxid ,
347+ long startTimeNs ) {
347348 highestSyncedTxid .set (processedTxid );
349+ boolean epochChanged = false ;
350+ consumeLock .lock ();
351+ try {
352+ int currentEpochAndState = epochAndState ;
353+ if (epoch (currentEpochAndState ) != epochWhenSync ) {
354+ epochChanged = true ;
355+ }
356+ } finally {
357+ consumeLock .unlock ();
358+ }
348359 for (Iterator <FSWALEntry > iter = unackedAppends .iterator (); iter .hasNext ();) {
349360 FSWALEntry entry = iter .next ();
350361 if (entry .getTxid () <= processedTxid ) {
351- entry .release ();
362+ if (!epochChanged ) {
363+ entry .release ();
364+ }
352365 iter .remove ();
353366 } else {
354367 break ;
@@ -399,7 +412,7 @@ private void sync(AsyncWriter writer) {
399412 if (error != null ) {
400413 syncFailed (epoch , error );
401414 } else {
402- syncCompleted (writer , currentHighestProcessedAppendTxid , startTimeNs );
415+ syncCompleted (epoch , writer , currentHighestProcessedAppendTxid , startTimeNs );
403416 }
404417 }, consumeExecutor );
405418 }
You can’t perform that action at this time.
0 commit comments