Failure modes
Diagnose selected startup, wallet, consolidation, mining, and reward-claim log messages.
Advanced5 min readAssumes a running client and familiarity with the configuration pages.
Start with the first relevant log line. Similar symptoms can have different causes, and timing, status endpoints and effective settings all help separate them.
Startup#
| Log text | Meaning | Operator action |
|---|---|---|
InaccessibleObjectException: module java.base does not "opens java.lang" | Running on a JDK newer than 11; Guice performs reflection later JDKs refuse | Set JAVA_HOME to Java 11 in the launcher and put its bin first on PATH. Invoking the start script directly inherits the system default |
For validation errors, see Configuration overview; it explains how startup reports invalid and contradictory settings.
Wallet and funding#
| Log text | Meaning | Operator action |
|---|---|---|
WalletManager could not cover <n> nanoERG | The wallet could not fund a transaction | Query the Ergo node's /wallet/status endpoint, not the Lithos API. If the wallet is unlocked, inspect the preceding wallet-refresh line for the available, reserved, reward and partial counts, and report those with the requested amount |
N wallet box(es) are at addresses this client cannot sign for and are unspendable | At least one box belongs to an address index outside the keys derived by this client | Increase node.numAddresses far enough to cover that index; its accepted maximum is 1000. For lending, keep emission.maxLenderKeys at or below node.numAddresses |
Do not compare a consolidation target with the raw UTXO total. Check the reward-box count
separately, using the Lithos client's /collateral/rewards endpoint, because reward boxes are
not eligible consolidation inputs.
Consolidation#
| Log text | Meaning | Operator action |
|---|---|---|
transport failure calling /wallet/boxes/unspent: timeout, with okhttp3.RealCall.timeoutExit | The engine's node request timed out | Record the elapsed time and compare it with wallet.node-call-timeout-ms and wallet.node-read-timeout-ms. See Wallet and consolidation before changing a timeout or the page size |
Wallet refreshed - … PARTIAL | The selection cache did not hold the whole wallet | Check both wallet.max-descriptors and wallet.max-descriptor-bytes; a wallet of large boxes reaches the byte bound first. Where excluded boxes fill the cache, consolidation finds nothing eligible and the pass ends without work |
consolidation attempt expired | The end-to-end consolidation budget expired | Confirm wallet.consolidation.attempt-timeout-ms exceeds wallet.inventory-walk-timeout-ms, as the wallet configuration page requires |
Consolidation capped at N of M transaction(s): optional work may hold X inputs | The pass requested M transactions; the optional-input budget allowed N | The effective count is bounded by both wallet.consolidation.num-transactions and available wallet.max-optional-inputs capacity. Raising num-transactions cannot exceed that capacity |
target unreachable from eligible boxes alone | Excluded boxes already exceed wallet.consolidation.target-utxos | Informational. The client consolidates eligible boxes but cannot reduce the wallet below the excluded-box count. A pass reporting no-work has finished, not failed |
Mining#
| Log text | Meaning | Operator action |
|---|---|---|
No usable difficulty commitment ... may be considered fraudulent | No active commitment is currently usable | Expected at first startup until dictionary synchronization and commitment activation complete. Work submitted before the commitment is active is not payable. If it persists after synchronization, check the Commitment tab under Mining, Difficulty in the web interface |
Stratum is not accepting rigs on <address>, port <port> | The stratum could not listen on stratum.bindAddress and stratum.stratumPort. The rest of the client keeps running, but no rig can connect | Check that bindAddress is an address this machine holds and that no other program uses the port, then restart. See Which rigs can connect |
Auto-commit is off (state.autoCommit) | The client will not register you or change your commitment on its own | Expected. Commit from the Commitment tab, or set state.autoCommit = true. An unregistered miner cannot submit NISPs |
Auto-commit waiting on ... | Registration or a commitment change is waiting on the named condition | No action for sync, confirmation or the 845-block replacement rule. Logged again only when the reason changes |
Difficulty commitment ... is on chain | The confirmed commitment equals stratum.diff | None. The client stops checking until the next restart |
Cannot submit NISPs until commit (height,diff) is in effect | The commitment exists and is waiting to activate | No action; this is progress rather than a fault |
Node left N of M requested transaction(s) out of candidate ... | Your Ergo node left the named transactions out of the block it built. The rest of the package is still mined | Search the Ergo node's log for the transaction id. A Not included transaction line gives the reason, and no such line means one of its inputs was missing or already spent |
Node omitted genesis ... skipping collateral ... and rebuilding | Your node left this block's genesis transaction out, so the block would not have been a Lithos block. The client draws another box, up to three times per block | Search the Ergo node's log for the genesis transaction id. If it repeats every block, report it |
N of M collateral boxes pay into a rollup chain this build does not compile and were skipped | Those boxes name a rollup chain in their R8 that this release cannot pay into, so they are never drawn | None while other boxes remain. If the line ends None are left, so blocks are mined solo, update the client |
The emissions source's ...-byte, ...-cost allowance holds N of M queue spends | Your block carries only the queue spends that fit the emissions source's byte and cost limits | Raise maxBytes or maxCost under stratum.candidate.sources.emissions, or lower its maxTxs or emission.candidateActivates |
Only N of M pinned input(s) can be set aside | The wallet has too few plain boxes of at least 0.001 ERG to fund fraud proofs inside your own block | Add a plain wallet box of 0.001 ERG or more, or lower stratum.candidate.pinnedInputs. Fraud proofs still reach the chain through the mempool |
Reward claims#
| Log text | Meaning | Operator action |
|---|---|---|
400 Nothing to claim - another claim is already sweeping these boxes - try again shortly | Another claim currently owns the unlocked reward boxes | Do not retry until the previously broadcast claim transaction confirms or fails. The response does not mean that no rewards are claimable |
Edit this page on GitHubsynced from e0ca86a