@Override protected Future<WriteResponse> executeOp(AsyncLogWriter writer, Sequencer sequencer, Object txnLock) { // write a control record if heartbeat is the first request of the recovered log segment. if (writeControlRecord) { long txnId; Future<DLSN> writeResult; synchronized (txnLock) { txnId = sequencer.nextId(); writeResult = ((BKAsyncLogWriter) writer).writeControlRecord(new LogRecord(txnId, HEARTBEAT_DATA)); } return writeResult.map(new AbstractFunction1<DLSN, WriteResponse>() { @Override public WriteResponse apply(DLSN value) { return ResponseUtils.writeSuccess().setDlsn(value.serialize(dlsnVersion)); } }); } else { return Future.value(ResponseUtils.writeSuccess()); } }
LogRecord record = DLMTestUtil.getLogRecordInstance(txid++); record.setControl(); Await.result(writer.writeControlRecord(record));
FutureUtils.result(writer1.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); FutureUtils.result(writer0.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1)));
writer1.setForceRecovery(false); FutureUtils.result(writer1.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); FutureUtils.result(writer0.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); if (null == reader0) { reader0 = dlmreader0.getInputStream(1);
writer1.setForceRolling(false); FutureUtils.result(writer1.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); FutureUtils.result(writer0.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); LOG.info("Completed {} write", j); if (null == reader0) {
FutureUtils.result(writer0.write(DLMTestUtil.getLogRecordInstance(txid++))); FutureUtils.result(writer1.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); FutureUtils.result(writer0.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); if (null == reader0) { reader0 = dlmreader0.getInputStream(1);
writer1.setForceRolling(false); FutureUtils.result(writer1.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); FutureUtils.result(writer0.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); if (null == reader0) { reader0 = dlmreader0.getInputStream(1);
writer1.setForceRolling(false); FutureUtils.result(writer1.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); FutureUtils.result(writer0.writeControlRecord(DLMTestUtil.getLogRecordInstance(txid-1))); if (null == reader0) { reader0 = dlmreader0.getInputStream(1);
final long currentLogSegmentSeqNo = i + 1; BKAsyncLogWriter writer = (BKAsyncLogWriter)(dlm.startAsyncLogSegmentNonPartitioned()); DLSN dlsn = Await.result(writer.writeControlRecord(new LogRecord(txid++, "control".getBytes(UTF_8)))); assertEquals(currentLogSegmentSeqNo, dlsn.getLogSegmentSequenceNo()); assertEquals(0, dlsn.getEntryId());