Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

13. When something goes wrong

The executor is not running

The most common mistake: you run a sequence and forgot to start the executor in the other terminal. In 0.5.0 Anvil does not say so clearly. It retries the connection for several seconds, printing hundreds of lines of motor conectado and conexión cerrada; esperando otra (“engine connected”, “connection closed; waiting for another”), and then ends with:

$ anvil sequences/first.yseq 2>&1 | tail -n 2
conexión cerrada; esperando otra
no se pudo conectar a los ejecutores de pasos (embebido en 127.0.0.1:33973): WASI socket error: ErrorCode { code: 14, name: "connection-refused", message: "The TCP connection was forcefully rejected" }

“Could not connect to the step executors … connection refused”. Two things in that message are misleading. It names embebido, the engine’s built-in executor, and a port that is not the one you declared — but the executor that refused is yours, bench on 9201 (#78). When you see connection-refused, check first that every grpc executor in the sequence is running:

$ ss -ltn | grep 9201

prints a line when something is listening on that port, and nothing when not.

An old executor is still running

The opposite problem is worse, because nothing fails. If an executor from an earlier session is still listening on the port — started in a terminal you closed, or left behind by a crash — Anvil talks to it, and it answers with whatever code it was built from. You change a step, run the sequence, and see the old behaviour.

Before chasing a result that makes no sense, see who owns the port:

$ ss -ltnp | grep 9201

The process name and number are at the end of the line; stop it and start your executor again.

If you start a C# executor while another one holds the port, it prints its usual anvil C# executor: … on 127.0.0.1:9201 line and then stops with Unhandled exception. System.IO.IOException: Failed to bind to address http://127.0.0.1:9201: address already in use. and a stack trace. Believe the exception, not the first line (#79).

I changed a step and nothing changed

The executor serves the code it was started with. Stop it and start it again; dotnet run rebuilds. The same goes for the Python executor. Rust modules are read when Anvil starts the executor, so rebuild and copy the .wasm again.

The sequence does not match the executors

la secuencia no casa con lo que ofrecen los ejecutores is Anvil refusing to run because the sequence asks for something an executor does not offer. The lines below it are in English and say exactly what: a step the executor does not serve (chapter 4), an input it does not take or a required one missing (chapter 7), an output it does not return (chapter 7). Nothing ran.

Messages that name Spanish keys

Some load errors in 0.5.0 still name the Spanish spelling of a key — for instance, a subsequence with its own executors: section is told to refer to executors “by name with ejecutor:”. The key is executor:. The sequence format itself is English only (#59).

The AppImage does not start

dlopen(): error loading libfuse.so.2 means FUSE 2 is not installed; see the end of chapter 2.