electrs: Bug: 0.9.0 giving up on p2p connections to bitcoind much too quickly
Describe the bug A clear and concise description of what the bug is.
Electrs version 0.9.0
To Reproduce Just start, watch log (see below), see it failing to connect after just ~30s
Expected behavior Electrs to wait for bitcoind to become available
Configuration
environment:
- ELECTRS_NETWORK=testnet
- ELECTRS_VERBOSE=3
- ELECTRS_ELECTRUM_RPC_ADDR=0.0.0.0:${ELECTRS_TCP_PORT}
- ELECTRS_DAEMON_RPC_ADDR=bitcoind:${BITCOIND_RPC_PORT}
- ELECTRS_COOKIE_FILE=secret
- ELECTRS_JSONRPC_IMPORT=true
- ELECTRS_WAIT_DURATION_SECS=10
- ELECTRS_BULK_INDEX_THREADS=2
- ELECTRS_TXID_LIMIT=200
System running electrs Running within Docker + Compose on Ubuntu Linux 20.04 LTS.
Additional context
electrs_1 | Config { network: Testnet, db_path: "./db/testnet", daemon_dir: "/root/.bitcoin/testnet3", daemon_auth: CookieFile("/run/secrets/bitcoind_rpc_cookie"), daemon_rpc_addr: V4(172.27.0.3:18332), daemon_p2p_addr: V4(127.0.0.1:18333), electrum_rpc_addr: V4(0.0.0.0:51001), monitoring_addr: V4(127.0.0.1:14224), wait_duration: 10s, jsonrpc_timeout: 15s, index_batch_size: 10, index_lookup_limit: Some(200), auto_reindex: true, ignore_mempool: false, sync_once: false, server_banner: "Welcome to electrs 0.9.0 (Electrum Rust Server)!", args: [] }
electrs_1 | [2021-10-05T07:54:13.182Z INFO electrs::metrics::metrics_impl] serving Prometheus metrics on 127.0.0.1:14224
electrs_1 | [2021-10-05T07:54:13.183Z DEBUG tiny_http] Server listening on 127.0.0.1:14224
electrs_1 | [2021-10-05T07:54:13.183Z DEBUG tiny_http] Running accept thread
electrs_1 | [2021-10-05T07:54:13.449Z INFO electrs::db] "./db/testnet": 0 SST files, 0 GB, 0 Grows
electrs_1 | [2021-10-05T07:54:13.450Z DEBUG electrs::db] DB None
electrs_1 | [2021-10-05T07:54:13.458Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:13.459Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:13.459Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:14.460Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:14.461Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:14.461Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:15.461Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:15.462Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:15.463Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:16.463Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:16.464Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:16.464Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:17.464Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:17.465Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:17.466Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:18.466Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:18.467Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:18.467Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:19.467Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:19.479Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:19.479Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:20.479Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:20.480Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:20.480Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:21.480Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:21.483Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:21.483Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:22.483Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:22.484Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:22.484Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:23.484Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:23.485Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:23.485Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:24.485Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:24.487Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:24.487Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:25.487Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:25.488Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:25.488Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:26.488Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:26.489Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:26.489Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:27.489Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:27.490Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:27.490Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:28.491Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:28.493Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:28.493Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:29.493Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:29.494Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:29.494Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:30.494Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:30.496Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:30.496Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:31.496Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:31.497Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:31.497Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:32.497Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:32.499Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:32.499Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:33.499Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:33.500Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:33.500Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:34.500Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:34.501Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:34.501Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:35.502Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:35.503Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:35.503Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:36.503Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:36.505Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Loading block index...", data: None }
electrs_1 | [2021-10-05T07:54:36.505Z INFO electrs::daemon] waiting for RPC warmup: Loading block index...
electrs_1 | [2021-10-05T07:54:37.505Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:37.508Z DEBUG bitcoincore_rpc::client] JSON-RPC error for getblockchaininfo: RpcError { code: -28, message: "Verifying blocks...", data: None }
electrs_1 | [2021-10-05T07:54:37.509Z INFO electrs::daemon] waiting for RPC warmup: Verifying blocks...
electrs_1 | [2021-10-05T07:54:38.510Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:38.512Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getnetworkinfo []
electrs_1 | [2021-10-05T07:54:38.513Z DEBUG bitcoincore_rpc::client] JSON-RPC request: getblockchaininfo []
electrs_1 | [2021-10-05T07:54:38.515Z INFO electrs::db] closing DB at ./db/testnet
electrs_1 | Error: testnet p2p failed to connect: V4(127.0.0.1:18333)
electrs_1 |
electrs_1 | Caused by:
electrs_1 | Connection refused (os error 111)
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 26 (25 by maintainers)
Sounds good, perhaps with a note about checking config. Will do after #571
“Electrs now requires a P2P connection to bitcoind. If it can’t connect, electrs will fail.”
I just re-read the upgrading checklist and I see why I missed this. It doesn’t really say it’s now required – it just suggests to adapt old p2p conguration (which I didn’t have – I used JSON-RPC for everything). Anyway, I just added it and it is now re-indexing.
For P2P connections to bitcoind, it would be important that there is no timeout at all. It can take hours, or even days, to get a free P2P slot to a given bitcoind node. Or, your connection could be dropped by bitcoind for whatever reason, then you’ll need to retry to connect again. So I think this issue is still valid.
@romanz if you happen to use systemd, you may also want to read this one: https://github.com/bitcoin/bitcoin/pull/15367#issuecomment-762681497