public String toString() { return "[LedgerId:" + ledgerId + ", firstTxId:" + firstTxId + ", lastTxId:" + lastTxId + ", version:" + version + ", completionTime:" + completionTime + ", recordCount:" + recordCount + ", regionId:" + regionId + ", status:" + status + ", logSegmentSequenceNumber:" + getLogSegmentSequenceNumber() + ", lastEntryId:" + getLastEntryId() + ", lastSlotId:" + getLastSlotId() + ", inprogress:" + inprogress + ", minActiveDLSN:" + minActiveDLSN + ", startSequenceId:" + startSequenceId + "]"; }
public String getFinalisedData(LogSegmentMetadataVersion version) { String finalisedData; final long logSegmentSeqNo = getLogSegmentSequenceNumber(); final long lastEntryId = getLastEntryId(); final long lastSlotId = getLastSlotId(); final long minActiveEntryId = minActiveDLSN.getEntryId();
if (lastAddConfirmed < currentMetadata.getLastEntryId()) { alertStatsLogger.raise("Unexpected last entry id during read ahead; {} , {}", currentMetadata, lastAddConfirmed); if (conf.getTraceReadAheadMetadataChanges() && lastAddConfirmed > (currentMetadata.getLastEntryId() + 1)) { LOG.warn("Potential Metadata Corruption {} for stream {}, lastAddConfirmed {}", new Object[] {currentMetadata, logMetadata.getFullyQualifiedName(), lastAddConfirmed});
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(); }
@Test(timeout = 60000) public void testUpdateLogSegment() throws Exception { LogSegmentMetadata segment = createLogSegment(1L, 99L); Transaction<Object> createTxn = lsmStore.transaction(); lsmStore.createLogSegment(createTxn, segment); FutureUtils.result(createTxn.execute()); // the log segment should be created assertNotNull("LogSegment " + segment + " should be created", zkc.get().exists(segment.getZkPath(), false)); LogSegmentMetadata modifiedSegment = createLogSegment(1L, 999L); Transaction<Object> updateTxn = lsmStore.transaction(); lsmStore.updateLogSegment(updateTxn, modifiedSegment); FutureUtils.result(updateTxn.execute()); // the log segment should be updated LogSegmentMetadata readSegment = FutureUtils.result(LogSegmentMetadata.read(zkc, segment.getZkPath(), true)); assertEquals("Last entry id should be changed from 99L to 999L", 999L, readSegment.getLastEntryId()); }
LogSegmentMetadata metadataToChange = metadata.mutator() .setLastEntryId(metadata.getLastEntryId() + 100) .setLastTxId(metadata.getLastTxId() + 100) .build();