fix(git-gate): bound daemon client sessions
This commit is contained in:
@@ -41,6 +41,10 @@ from .manifest import Bottle, GitEntry
|
|||||||
# Short network alias for git-gate inside the sidecar bundle. The
|
# Short network alias for git-gate inside the sidecar bundle. The
|
||||||
# agent's `.gitconfig` insteadOf rewrites resolve through this name.
|
# agent's `.gitconfig` insteadOf rewrites resolve through this name.
|
||||||
GIT_GATE_HOSTNAME = "git-gate"
|
GIT_GATE_HOSTNAME = "git-gate"
|
||||||
|
# Bound half-open git client sessions. If an agent/tool runner is
|
||||||
|
# interrupted during push, git daemon should reap the receive-pack
|
||||||
|
# child instead of keeping the gate wedged indefinitely.
|
||||||
|
GIT_GATE_DAEMON_TIMEOUT_SECS = 60
|
||||||
|
|
||||||
|
|
||||||
def _empty_str_map() -> dict[str, str]:
|
def _empty_str_map() -> dict[str, str]:
|
||||||
@@ -247,6 +251,8 @@ def git_gate_render_entrypoint(upstreams: tuple[GitGateUpstream, ...]) -> str:
|
|||||||
"",
|
"",
|
||||||
"exec git daemon \\",
|
"exec git daemon \\",
|
||||||
" --reuseaddr \\",
|
" --reuseaddr \\",
|
||||||
|
f" --timeout={GIT_GATE_DAEMON_TIMEOUT_SECS} \\",
|
||||||
|
f" --init-timeout={GIT_GATE_DAEMON_TIMEOUT_SECS} \\",
|
||||||
" --base-path=/git \\",
|
" --base-path=/git \\",
|
||||||
" --export-all \\",
|
" --export-all \\",
|
||||||
" --enable=receive-pack \\",
|
" --enable=receive-pack \\",
|
||||||
|
|||||||
@@ -170,6 +170,8 @@ class TestEntrypointRender(unittest.TestCase):
|
|||||||
# Daemon line is what keeps PID 1 alive.
|
# Daemon line is what keeps PID 1 alive.
|
||||||
self.assertIn("exec git daemon", script)
|
self.assertIn("exec git daemon", script)
|
||||||
self.assertIn("--enable=receive-pack", script)
|
self.assertIn("--enable=receive-pack", script)
|
||||||
|
self.assertIn("--timeout=60", script)
|
||||||
|
self.assertIn("--init-timeout=60", script)
|
||||||
self.assertIn("--base-path=/git", script)
|
self.assertIn("--base-path=/git", script)
|
||||||
# The access-hook is what makes fetch a mirror operation
|
# The access-hook is what makes fetch a mirror operation
|
||||||
# against the upstream (PRD 0008 v1.1).
|
# against the upstream (PRD 0008 v1.1).
|
||||||
|
|||||||
Reference in New Issue
Block a user