Skip to content

v0.41.0

Choose a tag to compare

@rustyconover rustyconover released this 05 Aug 18:16
· 185 commits to main since this release

Large payloads are written in full, and the ports are held to it.

An unbuffered transport writer maps write() onto a single write(2) / send(2). Above INT_MAX on macOS that syscall either returns a short count of exactly INT_MAX with no error (pipes) or fails outright with EINVAL (unix and TCP sockets), so a >2 GiB Arrow IPC body was silently truncated and the peer then blocked forever waiting for bytes the message header had promised — a deadlock, not an exception. All seven unbuffered writers now loop on the returned count and clamp each call to 1 GiB.

Adds the large_payload conformance category so ports are held to the same rule: echo_binary_4mib always runs and catches a writer that never loops; echo_binary_over_int32_max crosses INT_MAX and is opt-in via VGI_RPC_CONFORMANCE_HUGE=1. Conformance tests may now declare a per-test timeout.