t/lib-httpd: document writing concurrency-safe CGI helpers
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
parent
e43647bf0e
commit
e324fdf46d
|
|
@ -159,6 +159,17 @@ 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 "claims" 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue