@Override public DLSN apply(LogRecordWithDLSN record) { return record.getDlsn(); } };
@Override public void onSuccess(LogRecordWithDLSN record) { readLoop(manager, record.getDlsn(), keepAliveLatch); } });
@Override public DLSN getCurrentKey() throws IOException, InterruptedException { return currentRecord.getDlsn(); }
@Override public void process(LogRecordWithDLSN record) { if ((record.getDlsn().compareTo(dlsn) >= 0) && (null == result)) { this.result = record; } }
@Override public void onSuccess(LogRecordWithDLSN record) { System.out.println("Received record " + record.getDlsn()); System.out.println("\"\"\""); System.out.println(new String(record.getPayload(), UTF_8)); System.out.println("\"\"\""); lastDLSN.set(record.getDlsn()); reader.readNext().addEventListener(this); } };
@Override public void onSuccess(LogRecordWithDLSN record) { System.out.println("Received record " + record.getDlsn()); System.out.println("\"\"\""); System.out.println(new String(record.getPayload(), UTF_8)); System.out.println("\"\"\""); reader.readNext().addEventListener(this); } };
/** * Find the id of the last edit log transaction written to a edit log * ledger. */ protected Pair<Long, DLSN> readLastTxIdInLedger(LogSegmentMetadata l) throws IOException { LogRecordWithDLSN record = recoverLastRecordInLedger(l, false, false, true); if (null == record) { return Pair.of(DistributedLogConstants.EMPTY_LOGSEGMENT_TX_ID, DLSN.InvalidDLSN); } else { return Pair.of(record.getTransactionId(), record.getDlsn()); } }
@Override public void onSuccess(LogRecordWithDLSN record) { this.lastSeenDLSN = record.getDlsn(); if (!startTransactionId.isPresent() || record.getTransactionId() >= startTransactionId.get()) { readAheadRecords.add(record); } if (readAheadRecords.size() >= maxNumCachedRecords) { setReadAheadCallback(this); } else { scheduleReadNext(); } }
@Override public void onSuccess(LogRecordWithDLSN record) { System.out.println("Received record " + record.getDlsn() + " from stream " + reader.getStreamName()); System.out.println("\"\"\""); System.out.println(new String(record.getPayload(), UTF_8)); System.out.println("\"\"\""); reader.readNext().addEventListener(this); } };
LogRecordWithInputStream(LogRecordWithDLSN logRecord) { Preconditions.checkNotNull(logRecord); LOG.debug("Got record dlsn = {}, txid = {}, len = {}", new Object[] {logRecord.getDlsn(), logRecord.getTransactionId(), logRecord.getPayload().length}); this.logRecord = logRecord; this.payloadStream = logRecord.getPayLoadInputStream(); }
public DLSN getLastDLSN(boolean recover, boolean includeEndOfStream) throws IOException { checkLogStreamExists(); return getLastLogRecord(recover, includeEndOfStream).getDlsn(); }
@Override public DLSN getLastDLSN() throws IOException { checkClosedOrInError("getLastDLSN"); return FutureUtils.result(getLastLogRecordAsyncInternal(false, false)).getDlsn(); }
private void readEntries(AsyncLogReader reader) { try { for (int i = 0; i < 300; i++) { LogRecordWithDLSN record = Await.result(reader.readNext()); currentDLSN.set(record.getDlsn()); } } catch (Exception ex) { failed = true; } finally { latch.countDown(); } }
@Test(timeout = 60000) public void testGetLogRecordNotLessThanTxIdWithLessTxId() throws Exception { String streamName = runtime.getMethodName(); BKDistributedLogManager bkdlm = createNewDLM(conf, streamName); DLMTestUtil.generateLogSegmentNonPartitioned(bkdlm, 0 /* control recs */, 1, 999L /* txid */); Optional<LogRecordWithDLSN> result = FutureUtils.result(getLogRecordNotLessThanTxId(bkdlm, 0, 99L)); assertTrue(result.isPresent()); assertEquals(999L, result.get().getTransactionId()); assertEquals(0L, result.get().getDlsn().getEntryId()); assertEquals(0L, result.get().getDlsn().getSlotId()); }
@Test(timeout = 60000) public void testLastRecordSelector() { LastRecordSelector selector = new LastRecordSelector(); for (int i = 0; i < 10; i++) { selector.process(DLMTestUtil.getLogRecordWithDLSNInstance( new DLSN(1L, i, 0L), i)); } assertEquals(new DLSN(1L, 9L, 0L), selector.result().getDlsn()); }
@Test(timeout = 60000) public void testForwardScanFirstRecord() throws Exception { String streamName = runtime.getMethodName(); BKDistributedLogManager bkdlm = (BKDistributedLogManager) createNewDLM(conf, streamName); DLMTestUtil.generateLogSegmentNonPartitioned(bkdlm, 0, 5, 1 /* txid */); DLSN dlsn = new DLSN(1,0,0); Future<LogRecordWithDLSN> futureLogrec = getFirstGreaterThanRecord(bkdlm, 0, dlsn); LogRecordWithDLSN logrec = Await.result(futureLogrec); assertEquals("should be an exact match", dlsn, logrec.getDlsn()); bkdlm.close(); }
@Test(timeout = 60000) public void testForwardScanNotFirstRecord() throws Exception { String streamName = runtime.getMethodName(); BKDistributedLogManager bkdlm = (BKDistributedLogManager) createNewDLM(conf, streamName); DLMTestUtil.generateLogSegmentNonPartitioned(bkdlm, 0, 5, 1 /* txid */); DLSN dlsn = new DLSN(1,1,0); Future<LogRecordWithDLSN> futureLogrec = getFirstGreaterThanRecord(bkdlm, 0, dlsn); LogRecordWithDLSN logrec = Await.result(futureLogrec); assertEquals("should be an exact match", dlsn, logrec.getDlsn()); bkdlm.close(); }
@Test(timeout = 60000) public void testGetLastRecordUserRecord() throws Exception { String streamName = runtime.getMethodName(); BKDistributedLogManager bkdlm = (BKDistributedLogManager) createNewDLM(conf, streamName); DLMTestUtil.generateLogSegmentNonPartitioned(bkdlm, 5 /* control recs */, 5, 1 /* txid */); Future<LogRecordWithDLSN> futureLogrec = getLastUserRecord(bkdlm, 0); LogRecordWithDLSN logrec = Await.result(futureLogrec); assertEquals(new DLSN(1,9,0), logrec.getDlsn()); bkdlm.close(); }
@Test(timeout = 60000) public void testForwardScanValidButNonExistentRecord() throws Exception { String streamName = runtime.getMethodName(); BKDistributedLogManager bkdlm = (BKDistributedLogManager) createNewDLM(conf, streamName); DLMTestUtil.generateLogSegmentNonPartitioned(bkdlm, 0, 5, 1 /* txid */); DLSN dlsn = new DLSN(1,0,1); Future<LogRecordWithDLSN> futureLogrec = getFirstGreaterThanRecord(bkdlm, 0, dlsn); LogRecordWithDLSN logrec = Await.result(futureLogrec); assertEquals(new DLSN(1,1,0), logrec.getDlsn()); bkdlm.close(); }
@Test(timeout = 60000) public void testForwardScanControlRecord() throws Exception { String streamName = runtime.getMethodName(); BKDistributedLogManager bkdlm = (BKDistributedLogManager) createNewDLM(conf, streamName); DLMTestUtil.generateLogSegmentNonPartitioned(bkdlm, 5 /* control recs */, 5, 1 /* txid */); DLSN dlsn = new DLSN(1,3,0); Future<LogRecordWithDLSN> futureLogrec = getFirstGreaterThanRecord(bkdlm, 0, dlsn); LogRecordWithDLSN logrec = Await.result(futureLogrec); assertEquals(new DLSN(1,5,0), logrec.getDlsn()); bkdlm.close(); }