From d64156e485f12e99bc9a51d8693221656f9889b7 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Tue, 12 Nov 2019 19:40:33 +0100 Subject: [PATCH] banlist: don't wait in preStart until bitcoind is ready preStart is meant for short-run scripts, but bitcoind can take a long time until it accepts commands, especially on low-powered systems. Fixes #122 --- modules/bitcoind.nix | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/modules/bitcoind.nix b/modules/bitcoind.nix index 689ca4c..78fa136 100644 --- a/modules/bitcoind.nix +++ b/modules/bitcoind.nix @@ -272,32 +272,18 @@ in { wantedBy = [ "bitcoind.service" ]; bindsTo = [ "bitcoind.service" ]; after = [ "bitcoind.service" ]; - preStart = '' - set +e - echo "Checking that bitcoind is up" - # Give bitcoind time to create pid file - sleep 2 - while true - do - '${cfg.package}'/bin/bitcoin-cli -datadir='${cfg.dataDir}' getnetworkinfo > /dev/null - if [ "$?" -eq 0 ]; then - break - fi - sleep 1 + script = '' + cd ${cfg.cli}/bin + # Poll until bitcoind accepts commands. This can take a long time. + while ! ./bitcoin-cli getnetworkinfo &> /dev/null; do + sleep 1 done + echo "Importing node banlist..." + . ${./banlist.cli.txt} ''; - serviceConfig = { User = "${cfg.user}"; Group = "${cfg.group}"; - script = '' - echo "Importing node banlist..." - cd ${cfg.cli}/bin - . ${./banlist.cli.txt} - ''; - - # Permission for preStart - PermissionsStartOnly = "true"; } // nix-bitcoin-services.defaultHardening // nix-bitcoin-services.allowTor; };