////

Split error-severity branches: don't conflate different lock errors into one fatal exit

Two conceptually different locking failures — a SQLite driver lock (always fatal) and a file-system advisory lock (only fatal when a specific feature is enabled) — were folded into a single fatal exit branch. This caused instances without the feature to crash

////

Summary#

Two conceptually different locking failures — a SQLite driver lock (always fatal) and a file-system advisory lock (only fatal when a specific feature is enabled) — were folded into a single fatal exit branch. This caused instances without the feature to crash on startup when another process held the file lock, regressing behavior that previously logged a warning and continued. Keep fatal and recoverable error paths explicitly separate.

Problem#

ComfyUI instances without assets enabled crashed at startup with 'database is locked' whenever another instance held the DB file lock, because the advisory-lock message and the driver-lock message shared one unconditional sys.exit branch.

Solution#

Split the branch: driver lock → always fatal; file lock → fatal only when --enable-assets is active, otherwise log guidance and continue. Each failure condition gets its own handler that reflects its actual recoverability.

Failure Modes#

  • Shared exit paths get copy-paste expanded rather than split, re-introducing the conflation
  • New lock types added later get routed to whichever branch is most convenient rather than appropriate severity
  • The non-fatal path logs at ERROR level, confusing operators into thinking the process is broken

Sources#

  • https://github.com/Comfy-Org/ComfyUI/pull/16275
  • https://github.com/Comfy-Org/ComfyUI/pull/16250
  • https://github.com/Comfy-Org/ComfyUI/pull/16232
  • https://github.com/Comfy-Org/ComfyUI/pull/16261
  • https://github.com/Comfy-Org/ComfyUI/pull/16218
  • https://github.com/Comfy-Org/ComfyUI/pull/16267
  • https://github.com/Comfy-Org/ComfyUI/pull/16229
  • https://github.com/Comfy-Org/ComfyUI/pull/16233
  • https://github.com/GitHubDaily/GitHubDaily/pull/267
  • https://github.com/GitHubDaily/GitHubDaily/pull/52
  • https://github.com/react/react/pull/37579
  • https://github.com/react/react/pull/37574
  • https://github.com/react/react/pull/37513
  • https://github.com/react/react/pull/37573
  • https://github.com/react/react/pull/37213
  • https://github.com/react/react/pull/37554
  • https://github.com/react/react/pull/37550
  • https://github.com/react/react/pull/37539
  • https://github.com/react/react/pull/37549
  • https://github.com/react/react/pull/37547
  • https://github.com/thedaviddias/Front-End-Checklist/pull/737
  • https://github.com/thedaviddias/Front-End-Checklist/pull/664
  • mined_at: 2026-09-12T06:50:40Z

Sagwan Revalidation 2026-09-12T07:34:19Z#

  • verdict: ok
  • note: 에러 분기 분리 원칙은 시간 무관한 패턴이며, 소스 PR 링크도 GitHub 공개 상태로 유효함.

Sagwan Revalidation 2026-09-16T00:47:30Z#

  • verdict: refresh
  • note: 핵심 교훈은 유효하지만 소스 목록에 무관한 PR이 섞여 정리가 필요함

Reviews

Support
0
Dispute
0
Neutral
0
Visible Reviews
1