/** @see JournalProtocol#journal */ @Override public JournalResponseProto journal(RpcController unused, JournalRequestProto req) throws ServiceException { try { impl.journal(PBHelper.convert(req.getJournalInfo()), req.getEpoch(), req.getFirstTxnId(), req.getNumTxns(), req.getRecords().toByteArray()); } catch (IOException e) { throw new ServiceException(e); } return VOID_JOURNAL_RESPONSE; }
@Override // EditLogOutputStream protected void flushAndSync(boolean durable) throws IOException { assert out.getLength() == 0 : "Output buffer is not empty"; if (doubleBuf.isFlushed()) { LOG.info("Nothing to flush"); return; } int numReadyTxns = doubleBuf.countReadyTxns(); long firstTxToFlush = doubleBuf.getFirstReadyTxId(); doubleBuf.flushTo(out); if (out.getLength() > 0) { assert numReadyTxns > 0; byte[] data = Arrays.copyOf(out.getData(), out.getLength()); out.reset(); assert out.getLength() == 0 : "Output buffer is not empty"; backupNode.journal(journalInfo, 0, firstTxToFlush, numReadyTxns, data); } }
/** @see JournalProtocol#journal */ @Override public JournalResponseProto journal(RpcController unused, JournalRequestProto req) throws ServiceException { try { impl.journal(PBHelper.convert(req.getJournalInfo()), req.getEpoch(), req.getFirstTxnId(), req.getNumTxns(), req.getRecords().toByteArray()); } catch (IOException e) { throw new ServiceException(e); } return VOID_JOURNAL_RESPONSE; }
@Override // EditLogOutputStream protected void flushAndSync(boolean durable) throws IOException { assert out.getLength() == 0 : "Output buffer is not empty"; if (doubleBuf.isFlushed()) { LOG.info("Nothing to flush"); return; } int numReadyTxns = doubleBuf.countReadyTxns(); long firstTxToFlush = doubleBuf.getFirstReadyTxId(); doubleBuf.flushTo(out); if (out.getLength() > 0) { assert numReadyTxns > 0; byte[] data = Arrays.copyOf(out.getData(), out.getLength()); out.reset(); assert out.getLength() == 0 : "Output buffer is not empty"; backupNode.journal(journalInfo, 0, firstTxToFlush, numReadyTxns, data); } }
/** @see JournalProtocol#journal */ @Override public JournalResponseProto journal(RpcController unused, JournalRequestProto req) throws ServiceException { try { impl.journal(PBHelper.convert(req.getJournalInfo()), req.getEpoch(), req.getFirstTxnId(), req.getNumTxns(), req.getRecords().toByteArray()); } catch (IOException e) { throw new ServiceException(e); } return VOID_JOURNAL_RESPONSE; }
@Override // EditLogOutputStream protected void flushAndSync(boolean durable) throws IOException { assert out.getLength() == 0 : "Output buffer is not empty"; if (doubleBuf.isFlushed()) { LOG.info("Nothing to flush"); return; } int numReadyTxns = doubleBuf.countReadyTxns(); long firstTxToFlush = doubleBuf.getFirstReadyTxId(); doubleBuf.flushTo(out); if (out.getLength() > 0) { assert numReadyTxns > 0; byte[] data = Arrays.copyOf(out.getData(), out.getLength()); out.reset(); assert out.getLength() == 0 : "Output buffer is not empty"; backupNode.journal(journalInfo, 0, firstTxToFlush, numReadyTxns, data); } }