KVM not accessible
Workers boot inside a microVM that needs read/write access to /dev/kvm. On Linux hosts where your
user is not in the kvm group (common on WSL2), starting a worker fails with KVM not accessible.
Add your user to the kvm group:
wsl --shutdown from a
Windows terminal and reopen your distribution.
For why workers run in microVMs, see Engine.
An observer’s target never runs
List the observers of the observed function:target and read its state:
pendingorerror:reasonsays why, for example the source or the target is not registered, the source’s worker has not accepted the observer yet, or it refused the observer’s args (INVALID_ARGS, or a code from the worker such asINVALID_CRON_EXPRESSION). See Observer states.activewithfiresanddroppedat 0: no call has reached it. Check these:- Only calls that start after the observer turned
active, end with an outcome itscapturefires on (success by default), and pass its filters run the target. A call already running when the observer turnedactivedoes not, so call the function again. - A function whose worker matches observers to calls (with
onObservationMatchoronObservationDeliver) gives a call only to the observers itsargsselect. Compare the observer’sargswith that function’s documentation, for example themethodandpathof anhttp::on-requestobserver or theexpressionof acron::on-tickobserver. See Observable functions.
- Only calls that start after the observer turned
droppedoractivation_failuresabove 0: calls reached it and were dropped or failed, counted by reason (OVERFLOW,LOOP_GUARD, …).
Logger lines do not show up
Logger sends its lines to the engine. They do not appear in your worker’s output. Look in the
engine’s output (under iii compose --up, .iii/compose/<namespace>/engine.log), or run:
OTEL_ENABLED=false).
Logger then falls back to the language’s own logging, which the Rust SDK prints only with a
tracing subscriber. See Where the lines go.