recordSerializer.serializeRecord(delegate); BufferBuilder bufferBuilder = createBufferBuilder(bufferSize); recordSerializer.copyToBufferBuilder(bufferBuilder); bufferBuilder.finish();
private void copyToFile() throws IOException { recordSerializer.reset(); BufferBuilder bufferBuilder = getCurrentBufferBuilder(); RecordSerializer.SerializationResult result = recordSerializer.copyToBufferBuilder(bufferBuilder); while (result.isFullBuffer()) { tryFinishCurrentBufferBuilder(); if (result.isFullRecord()) { break; } bufferBuilder = getCurrentBufferBuilder(); result = recordSerializer.copyToBufferBuilder(bufferBuilder); } }
private void copyToTargetFile(int partition) throws IOException, InterruptedException { recordSerializer.reset(); BufferBuilder bufferBuilder = getCurrentBufferBuilder(partition); RecordSerializer.SerializationResult result = recordSerializer.copyToBufferBuilder(bufferBuilder); while (result.isFullBuffer()) { tryFinishCurrentBufferBuilder(partition); if (result.isFullRecord()) { break; } bufferBuilder = getCurrentBufferBuilder(partition); result = recordSerializer.copyToBufferBuilder(bufferBuilder); } checkState(!recordSerializer.hasSerializedData(), "All data should be written at once"); }
if (subSerializationResult == SerializationResult.PARTIAL_RECORD_MEMORY_SEGMENT_FULL) { subSerializationResult = !needFlush ? subSerializer.copyToBufferBuilder(targetBuffer) : subSerializer.flushToBufferBuilder(targetBuffer); if (subSerializationResult == SerializationResult.FULL_RECORD_MEMORY_SEGMENT_FULL) { subSerializationResult = subSerializer.copyToBufferBuilder(targetBuffer);
SerializationResult result = serializer.copyToBufferBuilder(bufferBuilder); while (result.isFullBuffer()) { numBytesOut.inc(bufferBuilder.finish()); result = serializer.copyToBufferBuilder(bufferBuilder);
SerializationResult result = serializer.copyToBufferBuilder(bufferBuilder); while (result.isFullBuffer()) { numBytesOut.inc(bufferBuilder.finish()); result = serializer.copyToBufferBuilder(bufferBuilder);
private boolean copyFromSerializerToTargetChannel(int targetChannel, boolean isBroadcast, boolean flushAlways) throws IOException, InterruptedException { // We should reset the initial position of the intermediate serialization data buffer before // copying, so the serialization results can be copied to many different target buffers. serializer.reset(); boolean pruneTriggered = false; BufferBuilder bufferBuilder = getBufferBuilder(targetChannel, isBroadcast); RecordSerializer.SerializationResult result = serializer.copyToBufferBuilder(bufferBuilder); while (result.isFullBuffer()) { updateMetrics(bufferBuilder, isBroadcast); // If this was a full record, we are done. Not breaking // out of the loop at this point will lead to another // buffer request before breaking out (that would not be // a problem per se, but it can lead to stalls in the pipeline). if (result.isFullRecord()) { pruneTriggered = true; break; } bufferBuilder = requestNewBufferBuilder(targetChannel, isBroadcast); result = serializer.copyToBufferBuilder(bufferBuilder); } checkState(!serializer.hasSerializedData(), "All data should be written at once"); if (flushAlways) { if (isBroadcast) { flushAll(); } else { flush(targetChannel); } } return pruneTriggered; }