mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-07-09 16:08:31 +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
2 changed files with 6 additions and 2 deletions
|
|
@ -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 {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ _is_deerflow_pid() {
|
|||
return 0
|
||||
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
|
||||
[ -n "$root" ] || continue
|
||||
case "$files" in
|
||||
|
|
@ -122,7 +122,7 @@ _report_reclaimed_ports() {
|
|||
for port in 8001 3000 2026; do
|
||||
for pid in $(lsof -nP -iTCP:"$port" -sTCP:LISTEN -t 2>/dev/null); do
|
||||
_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
|
||||
owner=""
|
||||
while IFS= read -r root; do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue