/** * maintains a list of last <i>committedLog</i> * or so committed requests. This is used for * fast follower synchronization. * @param request committed request */ public void addCommittedProposal(Request request) { WriteLock wl = logLock.writeLock(); try { wl.lock(); if (committedLog.size() > commitLogCount) { committedLog.removeFirst(); minCommittedLog = committedLog.getFirst().packet.getZxid(); } if (committedLog.isEmpty()) { minCommittedLog = request.zxid; maxCommittedLog = request.zxid; } byte[] data = SerializeUtils.serializeRequest(request); QuorumPacket pp = new QuorumPacket(Leader.PROPOSAL, request.zxid, data, null); Proposal p = new Proposal(); p.packet = pp; p.request = request; committedLog.add(p); maxCommittedLog = p.packet.getZxid(); } finally { wl.unlock(); } }
/** * maintains a list of last <i>committedLog</i> * or so committed requests. This is used for * fast follower synchronization. * @param request committed request */ public void addCommittedProposal(Request request) { WriteLock wl = logLock.writeLock(); try { wl.lock(); if (committedLog.size() > commitLogCount) { committedLog.removeFirst(); minCommittedLog = committedLog.getFirst().packet.getZxid(); } if (committedLog.size() == 0) { minCommittedLog = request.zxid; maxCommittedLog = request.zxid; } // byte[] data = SerializeUtils.serializeRequest(request); QuorumPacket pp = new QuorumPacket(Leader.PROPOSAL, request.zxid, data, null); Proposal p = new Proposal(); p.packet = pp; p.request = request; committedLog.add(p); maxCommittedLog = p.packet.getZxid(); } finally { wl.unlock(); } }
@Test public void testSerializeRequestRequestIsNull() { byte[] data = SerializeUtils.serializeRequest(null); assertNull(data); }
@Test public void testSerializeRequestWithoutTxn() throws IOException { // Arrange TxnHeader header = mock(TxnHeader.class); doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Object[] args = invocation.getArguments(); OutputArchive oa = (OutputArchive) args[0]; oa.writeString("header", "test"); return null; } }).when(header).serialize(any(OutputArchive.class), anyString()); Request request = new Request(1, 2, 3, header, null, 4); // Act byte[] data = SerializeUtils.serializeRequest(request); // Assert assertNotNull(data); verify(header).serialize(any(OutputArchive.class), eq("hdr")); ByteArrayOutputStream baos = new ByteArrayOutputStream(); BinaryOutputArchive boa = BinaryOutputArchive.getArchive(baos); boa.writeString("header", "test"); baos.close(); assertArrayEquals(baos.toByteArray(), data); }
@Test public void testSerializeRequestRequestHeaderIsNull() { Request request = new Request(0, 0, 0, null, null, 0); byte[] data = SerializeUtils.serializeRequest(request); assertNull(data); }
throw new XidRolloverException(msg); byte[] data = SerializeUtils.serializeRequest(request); proposalStats.setLastProposalSize(data.length); QuorumPacket pp = new QuorumPacket(Leader.PROPOSAL, request.zxid, data, null);
byte[] data = SerializeUtils.serializeRequest(request);
byte[] data = SerializeUtils.serializeRequest(request); proposalStats.setLastBufferSize(data.length); QuorumPacket pp = new QuorumPacket(Leader.PROPOSAL, request.zxid, data, null);
@Test public void testGetProposalSize() throws IOException, Leader.XidRolloverException { // Arrange Request req = createMockRequest(); // Act leader.propose(req); // Assert byte[] data = SerializeUtils.serializeRequest(req); assertEquals(data.length, leaderBean.getLastProposalSize()); assertEquals(data.length, leaderBean.getMinProposalSize()); assertEquals(data.length, leaderBean.getMaxProposalSize()); }