@Override public Long apply(List<LogSegmentMetadata> segmentList) { long lastTxId = DistributedLogConstants.INVALID_TXID; for (LogSegmentMetadata l : segmentList) { lastTxId = Math.max(lastTxId, l.getLastTxId()); } return lastTxId; } }
break; if (segment.getLastTxId() < transactionId) { break; return found; if (foundSegment.getLastTxId() >= transactionId) { return found;
static void verifyLogSegment(Map<Long, LogSegmentMetadata> segments, DLSN lastDLSN, long logSegmentSequenceNumber, int recordCount, long lastTxId) { LogSegmentMetadata segment = segments.get(logSegmentSequenceNumber); assertNotNull(segment); assertEquals(lastDLSN, segment.getLastDLSN()); assertEquals(recordCount, segment.getRecordCount()); assertEquals(lastTxId, segment.getLastTxId()); }
final int nWays) { if (!segment.isInProgress()) { if (segment.getLastTxId() < transactionId) {
assertEquals(seqno, m.getLogSegmentSequenceNumber()); assertEquals((seqno - 1) * DEFAULT_SEGMENT_SIZE + 1, m.getFirstTxId()); assertEquals(seqno * DEFAULT_SEGMENT_SIZE, m.getLastTxId()); --seqno;
@Test(timeout = 60000) public void testReadMetadataCrossVersion() throws Exception { LogSegmentMetadata metadata1 = new LogSegmentMetadataBuilder("/metadata2", 1, 1000, 1).setRegionId(TEST_REGION_ID).build(); metadata1.write(zkc); // synchronous read LogSegmentMetadata read1 = FutureUtils.result(LogSegmentMetadata.read(zkc, "/metadata2", true)); assertEquals(read1.getLedgerId(), metadata1.getLedgerId()); assertEquals(read1.getFirstTxId(), metadata1.getFirstTxId()); assertEquals(read1.getLastTxId(), metadata1.getLastTxId()); assertEquals(read1.getLogSegmentSequenceNumber(), metadata1.getLogSegmentSequenceNumber()); assertEquals(DistributedLogConstants.LOCAL_REGION_ID, read1.getRegionId()); }
Mutator(LogSegmentMetadata original) { super(original.getZkPath(), original.getVersion(), original.getLedgerId(), original.getFirstTxId()); this.inprogress = original.isInProgress(); this.logSegmentSequenceNo = original.getLogSegmentSequenceNumber(); this.lastEntryId = original.getLastEntryId(); this.lastSlotId = original.getLastSlotId(); this.lastTxId = original.getLastTxId(); this.completionTime = original.getCompletionTime(); this.recordCount = original.getRecordCount(); this.regionId = original.getRegionId(); this.status = original.getStatus(); this.minActiveEntryId = original.getMinActiveDLSN().getEntryId(); this.minActiveSlotId = original.getMinActiveDLSN().getSlotId(); this.startSequenceId = original.getStartSequenceId(); this.envelopeEntries = original.getEnvelopeEntries(); }
private static void assertEqualsWithoutSequenceId(LogSegmentMetadata m1, LogSegmentMetadata m2) { assertEquals("expected " + m1 + " but got " + m2, m1.getLogSegmentSequenceNumber(), m2.getLogSegmentSequenceNumber()); assertEquals("expected " + m1 + " but got " + m2, m1.getLedgerId(), m2.getLedgerId()); assertEquals("expected " + m1 + " but got " + m2, m1.getFirstTxId(), m2.getFirstTxId()); assertEquals("expected " + m1 + " but got " + m2, m1.getLastTxId(), m2.getLastTxId()); assertEquals("expected " + m1 + " but got " + m2, m1.getLastDLSN(), m2.getLastDLSN()); assertEquals("expected " + m1 + " but got " + m2, m1.getRecordCount(), m2.getRecordCount()); assertEquals("expected " + m1 + " but got " + m2, m1.isInProgress(), m2.isInProgress()); }
FutureUtils.result(dryrunUpdater.updateLastRecord(completedLogSegment, goodRecord1)); assertEquals(goodLastDLSN1, updatedCompletedLogSegment.getLastDLSN()); assertEquals(goodRecord1.getTransactionId(), updatedCompletedLogSegment.getLastTxId()); assertTrue(updatedCompletedLogSegment.isRecordLastPositioninThisSegment(goodRecord1)); assertEquals(goodRecord1.getTransactionId(), updatedCompletedLogSegment.getLastTxId()); assertTrue(updatedCompletedLogSegment.isRecordLastPositioninThisSegment(goodRecord1)); assertNotNull(readCompletedLogSegment); assertEquals(goodLastDLSN1, readCompletedLogSegment.getLastDLSN()); assertEquals(goodRecord1.getTransactionId(), readCompletedLogSegment.getLastTxId()); assertTrue(readCompletedLogSegment.isRecordLastPositioninThisSegment(goodRecord1)); assertEquals(updatedCompletedLogSegment, readCompletedLogSegment);
metadata.mutator() .setLastEntryId(metadata.getLastEntryId() + 100) .setLastTxId(metadata.getLastTxId() + 100) .build(); metadataToChange.write(zkClient);