long logSegmentSequenceNumber = Long.parseLong(parts[3]); return new LogSegmentMetadataBuilder(path, llmv, ledgerId, txId) .setLogSegmentSequenceNo(logSegmentSequenceNumber) .setRegionId(regionId) .setStatus(status) .setCompletionTime(completionTime) .setRecordCount((int) recordCount) .setLogSegmentSequenceNo(logSegmentSequenceNumber) .setLastEntryId(lastEntryId) .setLastSlotId(lastSlotId)
.setLogSegmentSequenceNo(logSegmentSequenceNumber) .setMinActiveEntryId(minActiveEntryId) .setMinActiveSlotId(minActiveSlotId) .setCompletionTime(completionTime) .setRecordCount((int) recordCount) .setLogSegmentSequenceNo(logSegmentSequenceNumber) .setLastEntryId(lastEntryId) .setLastSlotId(lastSlotId)
.setLogSegmentSequenceNo(logSegmentSequenceNumber) .setMinActiveEntryId(minActiveEntryId) .setMinActiveSlotId(minActiveSlotId) .setCompletionTime(completionTime) .setRecordCount((int) recordCount) .setLogSegmentSequenceNo(logSegmentSequenceNumber) .setLastEntryId(lastEntryId) .setLastSlotId(lastSlotId)
new LogSegmentMetadata.LogSegmentMetadataBuilder(inprogressZnodePath, conf.getDLLedgerMetadataLayoutVersion(), lh.getId(), txId) .setLogSegmentSequenceNo(logSegmentSeqNo) .setRegionId(regionId) .setEnvelopeEntries(LogSegmentMetadata.supportsEnvelopedEntries(conf.getDLLedgerMetadataLayoutVersion()))
new LogSegmentMetadata.LogSegmentMetadataBuilder(znodePath, conf.getDLLedgerMetadataLayoutVersion(), lh.getId(), startTxID) .setLogSegmentSequenceNo(logSegmentSeqNo) .setInprogress(false) .build();
new LogSegmentMetadata.LogSegmentMetadataBuilder(znodePath, conf.getDLLedgerMetadataLayoutVersion(), lh.getId(), startTxID) .setLogSegmentSequenceNo(logSegmentSeqNo) .build(); l.write(dlm.writerZKC);
@Test(timeout = 60000, expected = BKException.ZKException.class) public void testOpenLedgerWhenZkClosed() throws Exception { ZooKeeperClient newZkc = TestZooKeeperClientBuilder.newBuilder() .name("zkc-openledger-when-zk-closed") .zkServers(zkServers) .build(); BookKeeperClient newBkc = BookKeeperClientBuilder.newBuilder() .name("bkc-openledger-when-zk-closed") .zkc(newZkc) .ledgersPath(ledgersPath) .dlConfig(conf) .build(); try { LedgerHandle lh = newBkc.get().createLedger(BookKeeper.DigestType.CRC32, "zkcClosed".getBytes(UTF_8)); lh.close(); newZkc.close(); LedgerHandleCache cache = LedgerHandleCache.newBuilder().bkc(newBkc).conf(conf).build(); // open ledger after zkc closed cache.openLedger(new LogSegmentMetadata.LogSegmentMetadataBuilder("", 2, lh.getId(), 1).setLogSegmentSequenceNo(lh.getId()).build(), false); } finally { newBkc.close(); } }
@Test(timeout = 60000) public void testReadLogSegmentWithSequenceId() throws Exception { LogSegmentMetadata metadata = new LogSegmentMetadataBuilder( "/metadata", LogSegmentMetadataVersion.VERSION_V5_SEQUENCE_ID, 1L, 0L) .setRegionId(0) .setLogSegmentSequenceNo(1L) .setStartSequenceId(999L) .build(); // write inprogress log segment with v5 String data = metadata.getFinalisedData(); LogSegmentMetadata parsedMetadata = LogSegmentMetadata.parseData("/metadatav5", data.getBytes(UTF_8), false); assertEquals(999L, parsedMetadata.getStartSequenceId()); LogSegmentMetadata metadatav4 = new LogSegmentMetadataBuilder( "/metadata", LogSegmentMetadataVersion.VERSION_V4_ENVELOPED_ENTRIES, 1L, 0L) .setRegionId(0) .setLogSegmentSequenceNo(1L) .setStartSequenceId(999L) .build(); String datav4 = metadatav4.getFinalisedData(); LogSegmentMetadata parsedMetadatav4 = LogSegmentMetadata.parseData("/metadatav4", datav4.getBytes(UTF_8), false); assertTrue(parsedMetadatav4.getStartSequenceId() < 0); } }
public static LogSegmentMetadata completedLogSegment(String ledgerPath, long ledgerId, long firstTxId, long lastTxId, int recordCount, long logSegmentSeqNo, long lastEntryId, long lastSlotId, int version) { LogSegmentMetadata metadata = new LogSegmentMetadata.LogSegmentMetadataBuilder( ledgerPath + "/" + inprogressZNodeName(logSegmentSeqNo), version, ledgerId, firstTxId) .setInprogress(false) .setLogSegmentSequenceNo(logSegmentSeqNo) .build(); return metadata.completeLogSegment(ledgerPath + "/" + completedLedgerZNodeNameWithLogSegmentSequenceNumber(logSegmentSeqNo), lastTxId, recordCount, lastEntryId, lastSlotId, firstTxId); }
@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()); }
public static LogSegmentMetadata inprogressLogSegment(String ledgerPath, long ledgerId, long firstTxId, long logSegmentSeqNo, int version) { return new LogSegmentMetadata.LogSegmentMetadataBuilder( ledgerPath + "/" + inprogressZNodeName(logSegmentSeqNo), version, ledgerId, firstTxId) .setLogSegmentSequenceNo(logSegmentSeqNo) .build(); }