Skip to content

When something is wrong

What a message means and what to do about it. Find the line you see in the log, the command output or the transaction reply.

Starting and stopping

What you see Why What to do
./config.json is not valid: missing host, db from check-config The file has no host or no db. Add them: see Configuration.
Unknown command "stauts". Did you mean "status"? A typo in the command or flag. The program exits 1. Run activeledger help.
IP:Port Binding not found in configuration or arguments. No host in the file and no --host/--port. Set host to ip:port.
./.identity not found on the identity step The identity file is not where --identity points. Fix the path, or start without --identity so the node makes one.
Neighbourhood not found inside config The file has no neighbourhood, and the node has not been asserted (or its database does not hold the network stream). Put the full neighbourhood in the file. On a node joining an asserted network, restore first: see Nodes.
Database Not Running - http://127.0.0.1:5259 db.autostart is false, so the node expects the store to be running already. Start the store, or remove db.autostart.
The display stops at network and Activeledger listening on port never appears The node listens only when every worker process has reported ready (one per core, or cpus). A worker that crashed or is still starting holds it. Read the lines above for a worker error. On a small machine set cpus lower.
Two nodes on one machine both start on the same port, and requests reach either one The server shares a port rather than refusing it, so a second node on the same port does not fail to start. Give each node its own --port. The store uses port - 1 and the TCP stream port + 1, so leave gaps of at least three.
Ctrl+C logs Shut Down Initiated and the node is still there It stops taking requests and exits about 1.3 seconds later; its database and restore engine go with it. Wait. A second Ctrl+C logs Shut down forced and exits at once.
--merge needs two or more configuration files, one per node, e.g. --merge a/config.json --merge b/config.json --merge was given one file. It exits 1 and changes nothing. Repeat --merge once per node's config.json.
Process 12345 did not exit in time from activeledger stop The node did not exit within the wait (30 seconds). The command exits 1. Run it again with --timeout 60, or check the process.
autostart.restore is false - this node will not run activerestore The file turns the repair engine off, usually left over from an old generator. Set "autostart": { "restore": true } unless you run activerestore yourself.
All known nodes must been online for assertion from --assert Every node in neighbourhood must be up and recognised before the settings move to the ledger. Start the missing nodes, check GET /a/status, try again.
Network has already been asserted The file already has a network key. Nothing; change settings with transactions instead: see Nodes.

Transactions

The reply to a transaction carries $summary with total, vote, commit and, when something failed, errors.

What you see Why What to do
vote below total, errors has Stream Position Incorrect One node's copy of a stream is behind. SPI repairs it on this very transaction. Send the transaction again. If it keeps happening on one node, restore it.
commit is 0 and the same error from every node The contract voted no; the text is the contract's own reason. Fix the transaction. The node log has the full reason when the reply is short.
Contract Version Lock 1.0.1 or Contract Global Lock That version, or the whole contract, is locked and cannot run. Call another version, or unlock it: see Deploy, update, lock and unlock.
Locking versions on update needs build 40300, Hybrid changes need build 40300, Hybrid registry not enabled The node's build is below the level the feature needs. Raise build on every node, after every node is upgraded: see Nodes.
Transactions never commit, nodes are up, no errors Not enough nodes are reachable to reach consensus.reached, or the nodes do not run the same build. Compare GET /a/status on each node: every neighbour should be listed. Compare build in every config.json.
Node already exists on an add transaction That host:port is already in the neighbourhood. Nothing to do, or use a different port.
Host node signature problem on add or remove Fewer than more than half of the nodes signed it with a valid node key. Collect more signatures, each named host:port exactly as in the neighbourhood.
Hybrid not admitted on a hybrid's register hybrid.admission does not allow that key. activeledger hybrid allow <key>: see Security.

Restore

What you see Why What to do
The node's database cannot be reached. Start the node (or its database with activeledger --db-only) and run the restore again A full restore writes to the node's database, and nothing is serving it. It exits 1 without doing anything. Start the node, or only its database with activeledger --db-only, then run activerestore --full again.
consensus.reached is not set in the config file, so no revision can be a majority and nothing will be restored Restore reads the percentage from config.json. On an asserted network it is on the ledger, which an empty node cannot read yet. The run exits 1. Put consensus, the full neighbourhood and network as <setup stream id>@<_rev> into the file for the restore: see Restoring a node.
[Not restored] <stream> at <rev>: no neighbour supplied it after 3 attempts The nodes were too busy to answer, or none holds that revision. Run activerestore --full again; it fetches only what is still missing.
Cannot rebuild <contract>@<version>, its file is missing The source for that version is not on this node. The rest of the restore carries on. Let the history pass finish, then run the restore again. If the version is retired, ignore it.
N stream(s) have a chain that could not be completed after History Complete Some transaction documents are held by too few nodes to adopt. Harmless for running the node. Run --history-only again later.
--skip-history and --history-only together leave nothing to do Both flags were given. It exits 1 straight away. Use one.

Hybrids

What you see Why What to do
activehybrid status exits 2, log says This release (x.y.z) is below the network minimum (a.b.c); not applying items The network's hybrid.minVersion is above this hybrid's release. It stops applying items and submissions answer This hybrid is outdated. Upgrade the hybrid, or lower the minimum with activeledger hybrid min-version <semver>. A hybrid that was outdated from its start needs a restart afterwards.
activehybrid divergences lists records The hybrid ran a transaction itself and got a different result from what the supernodes committed, or could not run it. It adopts the network's copy and keeps the record. Read the record. A contract that behaves differently on a hybrid should fork on isSupernode(): see Writing contracts that also run on hybrids.
401 bad signature or timestamp from /h/* The request's timestamp is more than 60 seconds from the supernode's clock, or the key is wrong. Fix the hybrid machine's clock.
403 key is not registered, key is retired, key is banned on this node The hybrid's key is not admitted on that supernode. activehybrid register; or activeledger hybrid unban <keyhash> on that supernode.
feed limit reached The supernode already serves hybridMaxFeeds feeds (32 by default). Raise hybridMaxFeeds on that supernode, or point the hybrid at another.