Skip to main content
Version: 0.1.0-alpha.4 (alpha)

Inspect and stop a local node

Check whether your node is ready, inspect a recent call and stop the node you started. These steps use the local node from Run your first node, through step 7. Keep that terminal open: its cli, field, start_node, stop_node and ready helpers select your private configuration and the process you own.

1. Check readiness and routes​

cli node get learning-node > "$RESULTS/node-inventory.json"
field "$RESULTS/node-inventory.json" data inventory health ready
cli route get > "$RESULTS/routes.json"
python3 - "$RESULTS/routes.json" <<'PY'
import json, sys
routes = json.load(open(sys.argv[1]))["data"]["snapshot"]["services"]
for route in routes:
print(route["service"], "via", route["routeId"])
PY

The readiness check should print True. Individual calls can still be denied or run out of resources. The route list shows examples/echo through its default and named deployment routes. If the connection is refused, check that the tutorial node is running and read $LSF_TUTORIAL_DIR/node/diagnostic.jsonl for startup errors.

For resource pressure, inspect the node's cells, queues, quotas and caches. A full execution-cell pool differs from a failed compiler or a denied capability. Use the inventory reference and resource budgets to interpret those fields.

2. Inspect your most recent echo call​

The first-node guide supplies an activation ID before sending each call. Its post-restart invocation uses learning-after-restart:

cli activation get learning-after-restart > "$RESULTS/activation-status.json"
field "$RESULTS/activation-status.json" data terminalState

You should see completed. Activation history is bounded; after eviction or another node restart, a missing status does not prove that the call never ran. Deployments and activation history have different lifetimes.

For your own calls, choose and save a new activation ID before dispatch. If the response is lost, inspect that original ID instead of invoking again to discover the old result.

3. Understand an explicit cancellation​

The echo call has already finished. Cancelling it demonstrates the already-terminal response:

cli activation cancel learning-after-restart > "$RESULTS/cancellation.json"
field "$RESULTS/cancellation.json" data disposition
cli activation get learning-after-restart > "$RESULTS/activation-status.json"
field "$RESULTS/activation-status.json" data terminalState

The output is already_terminal, followed by completed. For an active call, the same command requests cancellation. Keep these outcomes separate:

ResultMeaning
AcceptedThe node accepted the cancellation request; cleanup may still be running
Already terminalThe call already has a terminal outcome
Not foundThe node has no retained activation visible to this caller

Pressing Ctrl-C in a client stops its local wait; it does not prove the node or an external provider stopped. A cancelled call can also have completed an external effect before interruption. Follow the provider's recovery contract when that outcome is uncertain.

4. Recover a management request by its operation ID​

Managed changes have their own operation IDs, separate from invocation IDs. The policy walkthrough gives a complete example using policy operation to find creation and revocation results.

Choose the lookup that owns your request: deployment operation, release operation, rollout operation or policy operation. Keep its original tenant, operation ID, request and preconditions. An unknown lookup is still uncertain because receipt retention is finite. A historical receipt does not restore permission to a revoked publication or policy.

For a node with durable audit configured, read one bounded page with:

cli audit query --scope tenant --page-size 16

The basic tutorial node has no durable audit configured, so use this command only after enabling it through the audit configuration. Continue with the returned cursor, if any. An empty page with a cursor is not necessarily the end of history, and an audit acknowledgement is separate from the underlying operation result.

5. Stop or restart your node​

stop_node
tail -n 1 "$LSF_TUTORIAL_DIR/node/status.jsonl" > "$RESULTS/stopped.json"
field "$RESULTS/stopped.json" clean

The final check should print True for clean shutdown. The helper sends termination to the exact process started by this terminal and waits for it to exit. A forced stop or incomplete cleanup must be investigated before treating work as drained.

To resume this experiment with its saved deployments:

start_node
ready

When you are finished, remove the tutorial deployment and stop the node using the first-node cleanup. Keep or remove the printed private tutorial directory only after the node has stopped. Do not delete a live catalog or use a broad process-name kill command.

For an installed server, use its service status and drain commands and backup procedure. Preserve matching configuration, credentials, trust history and catalog state together in a consistent stopped backup. A binary downgrade does not convert stored data.

To change LSF itself, use the contribution guide. It covers choosing an issue, creating a branch and running the checks relevant to your change.