diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java index 0d2427a55e6a..ec42d6a156cb 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.java @@ -111,13 +111,14 @@ public interface LeaseRecovery { private final FileSystem fs; private final Path logDir; - private AtomicBoolean loading = new AtomicBoolean(true); - private AtomicBoolean inSync = new AtomicBoolean(false); - private AtomicReference syncException = new AtomicReference<>(); + private final AtomicReference syncException = new AtomicReference(); + private final AtomicBoolean loading = new AtomicBoolean(true); + private final AtomicBoolean inSync = new AtomicBoolean(false); + private final AtomicLong totalSynced = new AtomicLong(0); + private final AtomicLong lastRollTs = new AtomicLong(0); + private LinkedTransferQueue slotsCache = null; private Set corruptedLogs = null; - private AtomicLong totalSynced = new AtomicLong(0); - private AtomicLong lastRollTs = new AtomicLong(0); private FSDataOutputStream stream = null; private long flushLogId = 0; private int slotIndex = 0; @@ -148,6 +149,7 @@ public void start(int numSlots) throws IOException { } // Init buffer slots + loading.set(true); slots = new ByteSlot[numSlots]; slotsCache = new LinkedTransferQueue(); while (slotsCache.size() < numSlots) { diff --git a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.java b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.java index b5747c8aa082..35c8c786bf2a 100644 --- a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.java +++ b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/store/wal/TestWALProcedureStore.java @@ -83,6 +83,7 @@ public void setUp() throws IOException { procStore = ProcedureTestingUtility.createWalStore(htu.getConfiguration(), fs, logDir); procStore.start(PROCEDURE_STORE_SLOTS); procStore.recoverLease(); + procStore.load(new LoadCounter()); } @After @@ -434,7 +435,9 @@ private void corruptLog(final FileStatus logFile, final long dropBytes) InputStream in = fs.open(logFile.getPath()); OutputStream out = fs.create(tmpPath); IOUtils.copyBytes(in, out, logFile.getLen() - dropBytes, true); - fs.rename(tmpPath, logFile.getPath()); + if (!fs.rename(tmpPath, logFile.getPath())) { + throw new IOException("Unable to rename"); + } } private void verifyProcIdsOnRestart(final Set procIds) throws Exception {