Expose dynamic compile failures
This commit is contained in:
@@ -292,17 +292,19 @@ All compiler processes use the same per-unit lock, so concurrent demand and scan
|
||||
discovery cannot publish duplicate artifacts. The priority worker is idle when
|
||||
there is no demand and never scans the site on its own. Unit
|
||||
compilation writes and validates a process-unique temporary wasm file, then
|
||||
publishes it with an atomic rename. When proactive compilation is enabled,
|
||||
read-only HTTP requests keep using the last complete artifact while requesting
|
||||
that stale unit at the head of the compiler queue. Non-read requests never run
|
||||
a stale entry artifact: they return `503 Service Unavailable` with
|
||||
`Retry-After: 1`, allowing the client to retry after the priority rebuild.
|
||||
CLI and explicit compile paths remain synchronous. A failed rebuild removes
|
||||
availability and surfaces the compiler error rather than serving the old unit
|
||||
indefinitely. This freshness contract includes components resolved lazily from
|
||||
an otherwise-current CLI entry unit: if the proactive compiler already owns a
|
||||
stale child's lock, the CLI request joins that compile and waits for the fresh
|
||||
artifact. Read-only HTTP may use the child's last complete artifact instead.
|
||||
publishes it with an atomic rename. By default, requests do not execute stale
|
||||
code: a missing or changed unit is rebuilt synchronously and a failed dynamic
|
||||
build surfaces its bounded compiler diagnostic. `SERVE_LAST_KNOWN_GOOD=1`
|
||||
opts ordinary read-only HTTP requests into using the last complete,
|
||||
ABI-compatible artifact while requesting that stale unit at the head of the
|
||||
compiler queue. The proactive compiler must be enabled for this mode. Failed
|
||||
background builds preserve that artifact and its source map and serialized
|
||||
module until a later successful atomic publication replaces them. Missing
|
||||
source, incompatible ABI generations, CLI, WebSocket dispatch, and mutation
|
||||
requests never use last-known-good code. A stale mutation returns `503 Service
|
||||
Unavailable` with `Retry-After: 1`; CLI and explicit compile paths remain
|
||||
synchronous. If a proactive compiler already owns a stale child's lock, a CLI
|
||||
request joins that compile and waits for the current artifact.
|
||||
|
||||
Before preprocessing, the compiler verifies that the worker can actually read
|
||||
the source. An unreadable path is reported as a source-read failure with a
|
||||
|
||||
Reference in New Issue
Block a user