hubcio opened a new pull request, #4025: URL: https://github.com/apache/iggy/pull/4025
A PolledMessages reply concatenated the poll fragments into one buffer, walked the batch records into a second, then copied that into a zeroed reply frame: three copies plus a memset per poll, about four times the payload in memory traffic before the kernel copy. Nothing in the format required it, the reply record encoding is the storage encoding, except at-rest decryption. Build the reply as one 272-byte head fragment (ReplyHeader plus partition_id, current_offset, count) followed by the journal or disk Frozen fragments as they are, deriving count by walking the batch headers across fragments. The frame travels end to end as BusMessage = ResponseBacking (SmallVec inline for the single fragment every other reply is, 32 bytes) through send_to_client, the shard reply lane, the connection mailboxes and the writers: TCP flattens the fragments into one writev chunked at IOV_MAX, QUIC and TLS write per fragment, WS and WSS join once because tungstenite takes a single payload buffer. The decrypt path and the HTTP JSON handler keep the flattening builder, which also pins the wire bytes as the oracle in the new unit tests. LifecycleFrame stays 160 bytes. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
