Skip to content

Add pktline side-band-64 writer

Jacob Vosmaer requested to merge jv-sideband-writer into master

This is part of gitlab-com/gl-infra&372 (closed) and gitlab-com/gl-infra/scalability#918 (closed). In a later MR, we will use this code to cache PackObjectsHook responses.

PackObjectsHook generates two streams of data: stdout and stderr. To be able to replay them in the correct order it is practical to multiplex them into a single byte stream. Git has a format it uses for this, called "side-band-64k". So instead of inventing a new multiplexing scheme, I thought it would be simpler to just use the same scheme that Git itself uses.

While working on this, I noticed in https://gitlab.com/gitlab-org/git/-/blob/v2.30.0/Documentation/technical/protocol-common.txt#L51 that our internal/pktline package does not use the correct maximum packet size when writing packets. For reasons I do not know, the maximum is not 0xffff (65535), but 0xfff0 (65520). So this MR is also changing the maximum packet size constant.

Edited by Jacob Vosmaer

Merge request reports

Loading