@Test(timeout = 60000) public void testMutateTruncationStatus() { LogSegmentMetadata metadata = new LogSegmentMetadataBuilder( "/metadata", LogSegmentMetadataVersion.VERSION_V4_ENVELOPED_ENTRIES, 1L, 0L) .setRegionId(0).setLogSegmentSequenceNo(1L).build(); metadata = metadata.completeLogSegment("/completed-metadata", 1000L, 1000, 1000L, 0L, 0L); LogSegmentMetadata partiallyTruncatedSegment = metadata.mutator() .setTruncationStatus(TruncationStatus.PARTIALLY_TRUNCATED) .setMinActiveDLSN(new DLSN(1L, 500L, 0L)) .build(); LogSegmentMetadata fullyTruncatedSegment = partiallyTruncatedSegment.mutator() .setTruncationStatus(TruncationStatus.TRUNCATED) .build(); assertEquals(new DLSN(1L, 500L, 0L), fullyTruncatedSegment.getMinActiveDLSN()); }
/** * Change the truncation status of a <i>log segment</i> to partially truncated * * @param segment log segment to change sequence number. * @param minActiveDLSN DLSN within the log segment before which log has been truncated * @return new log segment */ @Override public Future<LogSegmentMetadata> setLogSegmentPartiallyTruncated(LogSegmentMetadata segment, DLSN minActiveDLSN) { final LogSegmentMetadata newSegment = segment.mutator() .setTruncationStatus(LogSegmentMetadata.TruncationStatus.PARTIALLY_TRUNCATED) .setMinActiveDLSN(minActiveDLSN) .build(); return addNewSegmentAndDeleteOldSegment(newSegment, segment); }
/** * Change the truncation status of a <i>log segment</i> to be active * * @param segment log segment to change truncation status to active. * @return new log segment */ @Override public Future<LogSegmentMetadata> setLogSegmentActive(LogSegmentMetadata segment) { final LogSegmentMetadata newSegment = segment.mutator() .setTruncationStatus(LogSegmentMetadata.TruncationStatus.ACTIVE) .build(); return addNewSegmentAndDeleteOldSegment(newSegment, segment); }
@Override public LogSegmentMetadata setLogSegmentPartiallyTruncated(Transaction<Object> txn, LogSegmentMetadata segment, DLSN minActiveDLSN) { final LogSegmentMetadata newSegment = segment.mutator() .setTruncationStatus(LogSegmentMetadata.TruncationStatus.PARTIALLY_TRUNCATED) .setMinActiveDLSN(minActiveDLSN) .build(); addNewSegmentAndDeleteOldSegment(txn, newSegment, segment); return newSegment; }
@Override public LogSegmentMetadata setLogSegmentTruncated(Transaction<Object> txn, LogSegmentMetadata segment) { final LogSegmentMetadata newSegment = segment.mutator() .setTruncationStatus(LogSegmentMetadata.TruncationStatus.TRUNCATED) .build(); addNewSegmentAndDeleteOldSegment(txn, newSegment, segment); return newSegment; }
static void setTruncationStatus(ZooKeeperClient zkc, LogSegmentMetadata l, TruncationStatus status) throws Exception { LogSegmentMetadata newSegment = l.mutator().setTruncationStatus(status).build(); DLMTestUtil.updateSegmentMetadata(zkc, newSegment); }
/** * Change the truncation status of a <i>log segment</i> to truncated * * @param segment log segment to change truncation status to truncated. * @return new log segment */ @Override public Future<LogSegmentMetadata> setLogSegmentTruncated(LogSegmentMetadata segment) { final LogSegmentMetadata newSegment = segment.mutator() .setTruncationStatus(LogSegmentMetadata.TruncationStatus.TRUNCATED) .build(); return addNewSegmentAndDeleteOldSegment(newSegment, segment); }