From 484bc94ecee34ec9f445affd9b014f697e84cf3f Mon Sep 17 00:00:00 2001 From: Kosyrev Serge Date: Wed, 3 Mar 2021 19:30:39 +0300 Subject: [PATCH] WIP CAD-2726 supervisord: genesis caching from 'cardano-ops' --- nix/supervisord-cluster/default.nix | 5 ++++- nix/supervisord-cluster/genesis.nix | 22 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/nix/supervisord-cluster/default.nix b/nix/supervisord-cluster/default.nix index 737c67ca236..4a4998620db 100644 --- a/nix/supervisord-cluster/default.nix +++ b/nix/supervisord-cluster/default.nix @@ -3,6 +3,7 @@ , bech32 , basePort ? 30000 , stateDir ? "./state-cluster" +, cacheDir ? "./.cache" , extraSupervisorConfig ? {} , useCabalRun ? false ## @@ -45,7 +46,7 @@ let mkGenesisBash = pkgs.callPackage ./genesis.nix { inherit lib - stateDir + cacheDir stateDir baseEnvConfig basePort profile; @@ -73,6 +74,8 @@ let --trace | --debug ) set -x;; * ) break;; esac; shift; done + mkdir -p ${cacheDir} + if [ -f ${stateDir}/supervisord.pid ] then echo "Cluster already running. Please run `stop-cluster` first!" diff --git a/nix/supervisord-cluster/genesis.nix b/nix/supervisord-cluster/genesis.nix index dcfa13b3eaf..170a6a4f4fd 100644 --- a/nix/supervisord-cluster/genesis.nix +++ b/nix/supervisord-cluster/genesis.nix @@ -3,6 +3,7 @@ , writeText ## , path +, cacheDir , stateDir , baseEnvConfig , basePort @@ -17,7 +18,7 @@ let '' system_start_epoch=$(date +%s --date="${genesis.genesis_future_offset}") system_start_human=$(date --utc +"%Y-%m-%dT%H:%M:%SZ" --date=@$system_start_epoch) - '';; + ''; byronGenesis = '' cli_args=( @@ -58,7 +59,16 @@ let } ' --null-input > ${stateDir}/byron-protocol-params.json cli byron genesis genesis ''${cli_args[@]} - '';; + ''; + shelleyGenesisCache = + genesisParams: + '' + genesis_params_hash=$(jq . --sort-keys <<<'${genesisParams}' | + sha1sum | cut -c-7) + genesis_cache_id=$(jq <<<$genesis_params \ + '"k\(.n_pools)-d\(.dense_pool_density)-\(.delegators / 1000)kD-\(.utxo / 1000)kU-\(params_hash)" + ' --arg params_hash "$genesis_params_hash" --raw-output) + ''; shelleyGenesisSpec = '' cli genesis create --genesis-dir ${stateDir}/shelley/ \ @@ -271,13 +281,17 @@ let --tx-body-file "${stateDir}/shelley/transfer-register-delegate-tx.txbody" \ --out-file "${stateDir}/shelley/transfer-register-delegate-tx.tx" ''; + + genesisCacheDir = "${cacheDir}/genesis"; in '' PATH=$PATH:${path} - mkdir -p ${stateDir}/{shelley,webserver} + mkdir -p ${stateDir}/{shelley,webserver} ${genesisCacheDir} + + ${shelleyGenesisCache (__toJSON genesis)} cat <