public ProcedureWALFile(FileSystem fs, Path logFile, ProcedureWALHeader header, long startPos, long timestamp) { this.fs = fs; this.header = header; this.logFile = logFile; this.startPos = startPos; this.logSize = startPos; this.timestamp = timestamp; tracker.setPartialFlag(true); }
public ProcedureWALFile(final FileSystem fs, final FileStatus logStatus) { this.fs = fs; this.logFile = logStatus.getPath(); this.logSize = logStatus.getLen(); this.timestamp = logStatus.getModificationTime(); tracker.setPartialFlag(true); }
/** * If last log's tracker is not null, use it as {@link #storeTracker}. Otherwise, set storeTracker * as partial, and let {@link ProcedureWALFormatReader} rebuild it using entries in the log. */ private void initTrackerFromOldLogs() { if (logs.isEmpty() || !isRunning()) { return; } ProcedureWALFile log = logs.getLast(); if (!log.getTracker().isPartial()) { storeTracker.resetTo(log.getTracker()); } else { storeTracker.reset(); storeTracker.setPartialFlag(true); } }
} catch (IOException e) { log.getTracker().reset(); log.getTracker().setPartialFlag(true); LOG.warn("Unable to read tracker for {}", log, e);
tracker.setPartialFlag(false);
@Test public void testPartialTracker() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); tracker.setPartialFlag(true); // nothing in the tracker, the state is unknown assertTrue(tracker.isEmpty()); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579)); // Mark 1 as deleted, now that is a known state tracker.setDeleted(1, true); tracker.dump(); assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579)); // Mark 579 as non-deleted, now that is a known state tracker.setDeleted(579, false); assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2)); assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580)); tracker.setDeleted(579, true); tracker.setPartialFlag(false); assertTrue(tracker.isEmpty()); }
public ProcedureWALFile(FileSystem fs, Path logFile, ProcedureWALHeader header, long startPos, long timestamp) { this.fs = fs; this.header = header; this.logFile = logFile; this.startPos = startPos; this.logSize = startPos; this.timestamp = timestamp; tracker.setPartialFlag(true); }
public ProcedureWALFile(FileSystem fs, Path logFile, ProcedureWALHeader header, long startPos, long timestamp) { this.fs = fs; this.header = header; this.logFile = logFile; this.startPos = startPos; this.logSize = startPos; this.timestamp = timestamp; tracker.setPartialFlag(true); }
public ProcedureWALFile(final FileSystem fs, final FileStatus logStatus) { this.fs = fs; this.logFile = logStatus.getPath(); this.logSize = logStatus.getLen(); this.timestamp = logStatus.getModificationTime(); tracker.setPartialFlag(true); }
public ProcedureWALFile(final FileSystem fs, final FileStatus logStatus) { this.fs = fs; this.logFile = logStatus.getPath(); this.logSize = logStatus.getLen(); this.timestamp = logStatus.getModificationTime(); tracker.setPartialFlag(true); }
private void initTrackerFromOldLogs() { // TODO: Load the most recent tracker available if (!logs.isEmpty()) { ProcedureWALFile log = logs.getLast(); try { log.readTracker(storeTracker); } catch (IOException e) { LOG.warn("Unable to read tracker for " + log + " - " + e.getMessage()); // try the next one... storeTracker.reset(); storeTracker.setPartialFlag(true); } } }
/** * If last log's tracker is not null, use it as {@link #storeTracker}. * Otherwise, set storeTracker as partial, and let {@link ProcedureWALFormatReader} rebuild * it using entries in the log. */ private void initTrackerFromOldLogs() { if (logs.isEmpty() || !isRunning()) return; ProcedureWALFile log = logs.getLast(); if (!log.getTracker().isPartial()) { storeTracker.resetTo(log.getTracker()); } else { storeTracker.reset(); storeTracker.setPartialFlag(true); } }
} catch (IOException e) { log.getTracker().reset(); log.getTracker().setPartialFlag(true); LOG.warn("Unable to read tracker for " + log + " - " + e.getMessage());
/** * If last log's tracker is not null, use it as {@link #storeTracker}. Otherwise, set storeTracker * as partial, and let {@link ProcedureWALFormatReader} rebuild it using entries in the log. */ private void initTrackerFromOldLogs() { if (logs.isEmpty() || !isRunning()) { return; } ProcedureWALFile log = logs.getLast(); if (!log.getTracker().isPartial()) { storeTracker.resetTo(log.getTracker()); } else { storeTracker.reset(); storeTracker.setPartialFlag(true); } }
} catch (IOException e) { log.getTracker().reset(); log.getTracker().setPartialFlag(true); LOG.warn("Unable to read tracker for {}", log, e);
public static void load(final Iterator<ProcedureWALFile> logs, final ProcedureStoreTracker tracker, final Loader loader) throws IOException { final ProcedureWALFormatReader reader = new ProcedureWALFormatReader(tracker, loader); tracker.setKeepDeletes(true); try { // Ignore the last log which is current active log. while (logs.hasNext()) { ProcedureWALFile log = logs.next(); log.open(); try { reader.read(log); } finally { log.close(); } } reader.finish(); // The tracker is now updated with all the procedures read from the logs tracker.setPartialFlag(false); tracker.resetUpdates(); } finally { tracker.setKeepDeletes(false); } }
public static void load(final Iterator<ProcedureWALFile> logs, final ProcedureStoreTracker tracker, final Loader loader) throws IOException { ProcedureWALFormatReader reader = new ProcedureWALFormatReader(tracker); tracker.setKeepDeletes(true); try { while (logs.hasNext()) { ProcedureWALFile log = logs.next(); log.open(); try { reader.read(log, loader); } finally { log.close(); } } reader.finalize(loader); // The tracker is now updated with all the procedures read from the logs tracker.setPartialFlag(false); tracker.resetUpdates(); } finally { tracker.setKeepDeletes(false); } }
tracker.setPartialFlag(false);
@Test public void testPartialTracker() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); tracker.setPartialFlag(true); // nothing in the tracker, the state is unknown assertTrue(tracker.isEmpty()); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579)); // Mark 1 as deleted, now that is a known state tracker.setDeleted(1, true); tracker.dump(); assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579)); // Mark 579 as non-deleted, now that is a known state tracker.setDeleted(579, false); assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2)); assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580)); tracker.setDeleted(579, true); tracker.setPartialFlag(false); assertTrue(tracker.isEmpty()); }
@Test public void testPartialTracker() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); tracker.setPartialFlag(true); // nothing in the tracker, the state is unknown assertTrue(tracker.isEmpty()); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579)); // Mark 1 as deleted, now that is a known state tracker.setDeleted(1, true); tracker.dump(); assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(579)); // Mark 579 as non-deleted, now that is a known state tracker.setDeleted(579, false); assertEquals(ProcedureStoreTracker.DeleteState.YES, tracker.isDeleted(1)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(2)); assertEquals(ProcedureStoreTracker.DeleteState.NO, tracker.isDeleted(579)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(577)); assertEquals(ProcedureStoreTracker.DeleteState.MAYBE, tracker.isDeleted(580)); tracker.setDeleted(579, true); tracker.setPartialFlag(false); assertTrue(tracker.isEmpty()); }