public String getFinalisedData() { return getFinalisedData(this.version); }
@Override public void write(DataOutput dataOutput) throws IOException { String lsMetadataStr = logSegmentMetadata.getFinalisedData(); dataOutput.writeUTF(lsMetadataStr); String lhMetadataStr = new String(ledgerMetadata.serialize(), UTF_8); dataOutput.writeUTF(lhMetadataStr); }
public void write(ZooKeeperClient zkc) throws IOException, KeeperException.NodeExistsException { String finalisedData = getFinalisedData(version); try { zkc.get().create(zkPath, finalisedData.getBytes(UTF_8), zkc.getDefaultACL(), CreateMode.PERSISTENT); } catch (KeeperException.NodeExistsException nee) { throw nee; } catch (InterruptedException ie) { throw new DLInterruptedException("Interrupted on creating ledger znode " + zkPath, ie); } catch (Exception e) { LOG.error("Error creating ledger znode {}", zkPath, e); throw new IOException("Error creating ledger znode " + zkPath); } }
void writeLogSegment(final ZKTransaction txn, final List<ACL> acl, final String inprogressSegmentName, final LogSegmentMetadata metadata, final String path) { byte[] finalisedData = metadata.getFinalisedData().getBytes(UTF_8); Op zkOp = Op.create(path, finalisedData, acl, CreateMode.PERSISTENT); txn.addOp(new ZKOp(zkOp) { @Override protected void commitOpResult(OpResult opResult) { addLogSegmentToCache(inprogressSegmentName, metadata); } @Override protected void abortOpResult(Throwable t, OpResult opResult) { // no-op } }); }
@Override public void updateLogSegment(Transaction<Object> txn, LogSegmentMetadata segment) { byte[] finalisedData = segment.getFinalisedData().getBytes(UTF_8); Op updateOp = Op.setData(segment.getZkPath(), finalisedData, -1); txn.addOp(DefaultZKOp.of(updateOp)); }
@Override public void createLogSegment(Transaction<Object> txn, LogSegmentMetadata segment) { byte[] finalisedData = segment.getFinalisedData().getBytes(UTF_8); Op createOp = Op.create( segment.getZkPath(), finalisedData, zkc.getDefaultACL(), CreateMode.PERSISTENT); txn.addOp(DefaultZKOp.of(createOp)); }
public static void updateSegmentMetadata(ZooKeeperClient zkc, LogSegmentMetadata segment) throws Exception { byte[] finalisedData = segment.getFinalisedData().getBytes(UTF_8); zkc.get().setData(segment.getZkPath(), finalisedData, -1); }
@Test(timeout = 60000) public void testReadLogSegmentWithSequenceId() throws Exception { LogSegmentMetadata metadata = new LogSegmentMetadataBuilder( "/metadata", LogSegmentMetadataVersion.VERSION_V5_SEQUENCE_ID, 1L, 0L) .setRegionId(0) .setLogSegmentSequenceNo(1L) .setStartSequenceId(999L) .build(); // write inprogress log segment with v5 String data = metadata.getFinalisedData(); LogSegmentMetadata parsedMetadata = LogSegmentMetadata.parseData("/metadatav5", data.getBytes(UTF_8), false); assertEquals(999L, parsedMetadata.getStartSequenceId()); LogSegmentMetadata metadatav4 = new LogSegmentMetadataBuilder( "/metadata", LogSegmentMetadataVersion.VERSION_V4_ENVELOPED_ENTRIES, 1L, 0L) .setRegionId(0) .setLogSegmentSequenceNo(1L) .setStartSequenceId(999L) .build(); String datav4 = metadatav4.getFinalisedData(); LogSegmentMetadata parsedMetadatav4 = LogSegmentMetadata.parseData("/metadatav4", datav4.getBytes(UTF_8), false); assertTrue(parsedMetadatav4.getStartSequenceId() < 0); } }