[PATCH v5 3/3] t/lib-httpd: document writing concurrency-safe CGI helpers
- From
Michael Montalbo via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Sep 1, 2026, 15:53 UTC
- Message-ID
- <75a184ca09010c1ff75b140ae31c4af32fc33503.1788277983.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.2171.v5.git.1788277983.gitgitgadget@gmail.com>
From: Michael Montalbo <mmontalbo@gmail.com>
Update t/lib-httpd.sh to document the fixes applied to apply-one-time-script.sh and http-429.sh for future developers working on helper scripts. Add concrete examples of patterns and anti-patterns that should be considered when handling state management.
Signed-off-by: Michael Montalbo <mmontalbo@gmail.com> --- t/lib-httpd.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/t/lib-httpd.sh b/t/lib-httpd.sh index a216e5376f..115455784c 100644 --- a/t/lib-httpd.sh +++ b/t/lib-httpd.sh @@ -159,6 +159,18 @@ prepare_httpd() { mkdir -p "$HTTPD_DOCUMENT_ROOT_PATH" cp "$TEST_PATH"/passwd "$HTTPD_ROOT_PATH" cp "$TEST_PATH"/proxy-passwd "$HTTPD_ROOT_PATH" + # Apache can run the following scripts concurrently per request. Make + # sure any state management logic is resilient to race conditions. + # + # For example: + # - use "mkdir dir" to ensure only one request "succeeds" under some + # condition (see http-429.sh). + # - chain (&&) atomic operations like "rm marker" (no -f) with the + # logic that is guarded by the marker instead of relying on a + # separate "test -f" and "rm marker" check + # (see apply-one-time-script.sh). + # - use scratch file names that include the process ID ($$), so + # concurrent requests do not overwrite each other's state. install_script incomplete-length-upload-pack-v2-http.sh install_script incomplete-body-upload-pack-v2-http.sh install_script error-no-report.sh
-- gitgitgadget