mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-08-01 10:56:02 +00:00
fix: make local-dev (make dev) work on non-root / NFS hosts (#3590)
* fix(scripts): avoid lsof hang during make dev cleanup on NFS
`_is_deerflow_pid` and `_report_reclaimed_ports` call `lsof -p <pid>` to
enumerate a process's open files. On hosts whose working tree or home is
on a network filesystem (NFS/autofs), `lsof -p` blocks indefinitely on the
kernel stat calls, so `make dev` / `make stop` hang forever at
"Stopping all services...".
Add `-b` (avoid kernel blocking functions) and `-w` (suppress the
resulting warnings) to both calls. The network-only `lsof -nP -iTCP`
probes are unaffected and already returned quickly.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(nginx): set global error_log so local-dev nginx starts as non-root
nginx.local.conf only declared `error_log` inside the `http {}` block.
nginx opens its compiled-in default error log (on Debian/Ubuntu builds,
the absolute /var/log/nginx/error.log) at startup, before it reaches the
http-block directive. When `make dev` launches nginx as a non-root user
that path is not writable, so startup fails with:
[emerg] open() "/var/log/nginx/error.log" failed (13: Permission denied)
Declare a global (main-context) `error_log logs/nginx-error.log warn;`.
Combined with the existing `-p $REPO_ROOT`, logging resolves to the
repo-local logs/ directory and nginx starts without elevated privileges.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
deb736b819
commit
e97d93503d
@ -1,3 +1,7 @@
|
|||||||
|
# Global error_log (main context). Without this, nginx opens its compiled-in
|
||||||
|
# default (/var/log/nginx/error.log) at startup before reaching the http-block
|
||||||
|
# error_log, which fails with permission denied when run as a non-root user.
|
||||||
|
error_log logs/nginx-error.log warn;
|
||||||
events {
|
events {
|
||||||
worker_connections 1024;
|
worker_connections 1024;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,7 +105,7 @@ _is_deerflow_pid() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
files=$(lsof -p "$pid" 2>/dev/null) || return 1
|
files=$(lsof -b -w -p "$pid" 2>/dev/null) || return 1
|
||||||
while IFS= read -r root; do
|
while IFS= read -r root; do
|
||||||
[ -n "$root" ] || continue
|
[ -n "$root" ] || continue
|
||||||
case "$files" in
|
case "$files" in
|
||||||
@ -122,7 +122,7 @@ _report_reclaimed_ports() {
|
|||||||
for port in 8001 3000 2026; do
|
for port in 8001 3000 2026; do
|
||||||
for pid in $(lsof -nP -iTCP:"$port" -sTCP:LISTEN -t 2>/dev/null); do
|
for pid in $(lsof -nP -iTCP:"$port" -sTCP:LISTEN -t 2>/dev/null); do
|
||||||
_is_deerflow_pid "$pid" || continue
|
_is_deerflow_pid "$pid" || continue
|
||||||
files=$(lsof -p "$pid" 2>/dev/null)
|
files=$(lsof -b -w -p "$pid" 2>/dev/null)
|
||||||
case "$files" in *"$REPO_ROOT"/*) continue ;; esac # this worktree — normal
|
case "$files" in *"$REPO_ROOT"/*) continue ;; esac # this worktree — normal
|
||||||
owner=""
|
owner=""
|
||||||
while IFS= read -r root; do
|
while IFS= read -r root; do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user