Skip to content

OptimizedNodeBridge init should be concurrency-safe #85

@bbopen

Description

@bbopen

Summary

OptimizedNodeBridge.init() does not guard against concurrent calls. Multiple callers can trigger overlapping init() invocations, spawning more than minProcesses and running warmups multiple times.

Failure mode

  • Two callers invoke init() concurrently.
  • Both loops see processPool.length < minProcesses and spawn extra workers.
  • Warmup commands run multiple times.

Evidence

  • src/runtime/optimized-node.ts init() has no initPromise guard (unlike NodeBridge).

Proposed fix

  • Add an initPromise guard to make init() idempotent and safe under concurrency.
  • Ensure warmup runs once per initialization.

Acceptance criteria

  • Concurrent init() calls do not overspawn workers.
  • Warmup commands run once.
  • Add a test that calls init() concurrently and verifies pool size.

Metadata

Metadata

Assignees

Labels

area:runtime-nodeArea: Node runtime bridgebugSomething isn't workingpriority:p2Priority P2 (medium)

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions