Comme discuté lors de la visio dev du 1er août (Development talks - #71 by Moul), j’ai fusionné les branches gtest_custom
et ci_gtest
dans main
, tagué le tout avec 0.3.0
, ce qui a déclenché la CI.
L’image a bien été publiée dans le gitlab registry : registry.duniter.org/nodes/duniter-squid/squid:0.3.0
. Vous pouvez utiliser le docker-compose.yml
donné en exemple sur le dépôt : docker-compose.yml · main · nodes / duniter-squid · GitLab.
Avant de le lancer, il vous faut un nœud archive synchronisé sur la gtest, idéalement accessible localement, et dont vous indiquerez l’url dans RPC_ENDPOINT
du .env
.
J’ai fait un essai en local avec RPC_ENDPOINT=ws://duniter-archive:9944
.
$ docker compose up -d && docker compose logs -f processor
Je reproduis bien l’erreur
processor-1 | {"level":5,"time":1754217221271,"ns":"sqd:processor","err":{"stack":"TypeError: Cannot read properties of undefined (reading 'patch')
Ça provient de la ligne :
// Accomodate for versions of polkadot before and after 1.6.0:
const genesis: Genesis = genesisData.genesis.runtimeAndCode?.runtime || genesisData.genesis.runtimeGenesis.patch;
Avant le chemin dans les chainspecs était genesis.runtimeAndCode.runtime
et depuis substrate 1.6.0 c’est genesis.runtimeGenesis.patch
. Mais dans le fichier archive.zip
téléchargé par le script download_genesis.sh
, il n’y a que le fichier genesis.json
utilisé en entrée de Duniter et pas le fichier gtest.json
qui est le résultat de duniter build-spec --chain gtest_live 1> ./specs.json
exécuté à l’étape build_specs
de la CI de Duniter.
Le script download_genesis.sh
était basé sur une ancienne version de la CI Duniter qui ne publiait pas les chainspecs. La modif de @Moul tentait de récupérer les raw chainspecs alors qu’il fallait les chainspecs au format json non raw.
J’ai donc changé le job ID vers 147770
qui a tout les fichiers dans les artefacts. C’est à mon avis les artefacts de ce job qui devraient figurer sur la page de release Releases · nodes / rust / Duniter v2S · GitLab. Mais je suis une fois de plus paumé parmi les centaine de milliers de jobs Duniter.
Cette fois-ci, on a un tag 0.3.1
, et voici ce que ça donne :
$ docker compose down && docker compose up -d && docker compose logs -f processor
[+] Running 4/4
✔ Container duniter-squid-hasura-squid-1 Removed 10.3s
✔ Container duniter-squid-processor-1 Removed 0.0s
✔ Container duniter-squid-db-1 Removed 0.2s
✔ Network duniter-squid_default Removed 0.1s
[+] Running 16/16
✔ processor Pulled 35.4s
✔ 9824c27679d3 Already exists 0.0s
✔ 8c59d92d6fc9 Already exists 0.0s
✔ 54225bd60196 Already exists 0.0s
✔ a9e48ad1219d Already exists 0.0s
✔ a2ae4fd944fb Already exists 0.0s
✔ 68b41d8ff00e Already exists 0.0s
✔ 7105e8e13a10 Pull complete 31.8s
✔ d300530caba2 Pull complete 31.8s
✔ 9f4bf40e90cd Pull complete 31.8s
✔ ce677361fabc Pull complete 31.9s
✔ 2cfed348a327 Pull complete 34.1s
✔ c39c4ac5e0e7 Pull complete 34.2s
✔ 332167c96b7f Pull complete 34.2s
✔ cd10f143fffd Pull complete 34.2s
✔ 125042a53118 Pull complete 34.7s
[+] Running 4/4
✔ Network duniter-squid_default Created 0.0s
✔ Container duniter-squid-db-1 Healthy 2.8s
✔ Container duniter-squid-processor-1 Healthy 8.5s
✔ Container duniter-squid-hasura-squid-1 Started 8.7s
processor-1 | {"level":2,"time":1754219217133,"ns":"sqd:commands","msg":"MIGRATION:COPY-CUSTOM"}
processor-1 | {"level":2,"time":1754219217142,"ns":"sqd:commands","msg":"MIGRATION:APPLY"}
processor-1 | query: SELECT version()
processor-1 | query: SELECT * FROM current_schema()
processor-1 | query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'migrations'
processor-1 | query: SELECT * FROM "migrations" "migrations" ORDER BY "id" DESC
processor-1 | No migrations are pending
processor-1 | {"level":2,"time":1754219217631,"ns":"sqd:commands","msg":"PROCESS:PROD"}
processor-1 | {"level":2,"time":1754219218418,"ns":"sqd:processor","msg":"processing blocks from 0"}
processor-1 | {"level":2,"time":1754219218419,"ns":"sqd:processor","msg":"using chain RPC data source"}
processor-1 | {"level":2,"time":1754219218440,"ns":"sqd:processor","msg":"prometheus metrics are served at port 38971"}
processor-1 | {"level":2,"time":1754219218656,"ns":"sqd:processor:mapping","msg":"Using genesis files from ./input/gtest.json, ./input/genesis.json, ./input/block_hist.json, ./input/tx_hist.json, ./input/cert_hist.json"}
processor-1 | {"level":2,"time":1754219218809,"ns":"sqd:processor:mapping","msg":"Last v1 block is 844944"}
processor-1 | {"level":2,"time":1754219218810,"ns":"sqd:processor:mapping","msg":"Handling v1 block history"}
processor-1 | {"level":2,"time":1754219220857,"ns":"sqd:processor:mapping","msg":"-800000"}
processor-1 | {"level":2,"time":1754219222277,"ns":"sqd:processor:mapping","msg":"-700000"}
processor-1 | {"level":2,"time":1754219223869,"ns":"sqd:processor:mapping","msg":"-600000"}
processor-1 | {"level":2,"time":1754219225339,"ns":"sqd:processor:mapping","msg":"-500000"}
processor-1 | {"level":2,"time":1754219227017,"ns":"sqd:processor:mapping","msg":"-400000"}
processor-1 | {"level":2,"time":1754219228574,"ns":"sqd:processor:mapping","msg":"-300000"}
processor-1 | {"level":2,"time":1754219230132,"ns":"sqd:processor:mapping","msg":"-200000"}
processor-1 | {"level":2,"time":1754219231835,"ns":"sqd:processor:mapping","msg":"-100000"}
processor-1 | {"level":2,"time":1754219234872,"ns":"sqd:processor:mapping","msg":"Saving v1 block history"}
processor-1 | {"level":2,"time":1754219249115,"ns":"sqd:processor:mapping","msg":"Loading genesis file"}
processor-1 | {"level":2,"time":1754219251107,"ns":"sqd:processor:mapping","msg":"Saving data from genesis file"}
processor-1 | {"level":2,"time":1754219253368,"ns":"sqd:processor:mapping","msg":"Process cert history"}
processor-1 | cert not present in genesis but supposed to be expired after: { blockNumber: 642131, issuer: 8761, receiver: 5014, type: 'Creation' }
processor-1 | cert not present in genesis but supposed to be expired after: { blockNumber: 642141, issuer: 3343, receiver: 5864, type: 'Creation' }
processor-1 | cert not present in genesis but supposed to be expired after: { blockNumber: 642155, issuer: 6075, receiver: 6170, type: 'Creation' }
processor-1 | cert not present in genesis but supposed to be expired after: { blockNumber: 642159, issuer: 8591, receiver: 7387, type: 'Creation' }
processor-1 | cert not present in genesis but supposed to be expired after: {
processor-1 | blockNumber: 642160,
processor-1 | issuer: 12266,
processor-1 | receiver: 9214,
processor-1 | type: 'Creation'
processor-1 | }
processor-1 | cert not present in genesis but supposed to be expired after: {
processor-1 | blockNumber: 642162,
processor-1 | issuer: 4451,
processor-1 | receiver: 13123,
processor-1 | type: 'Creation'
processor-1 | }
...
processor-1 | cert not present in genesis but supposed to be expired after: {
processor-1 | blockNumber: 656757,
processor-1 | issuer: 7542,
processor-1 | receiver: 13465,
processor-1 | type: 'Creation'
processor-1 | }
processor-1 | {"level":2,"time":1754219256710,"ns":"sqd:processor:mapping","msg":"Saving certification history"}
processor-1 | {"level":2,"time":1754219259327,"ns":"sqd:processor:mapping","msg":"Loading transaction history"}
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | {"level":2,"time":1754219291440,"ns":"sqd:processor:mapping","msg":"There are 89685 wallets from genesis and 46359 additional wallets from tx history"}
processor-1 | {"level":2,"time":1754219291440,"ns":"sqd:processor:mapping","msg":" (total 136044)"}
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | invalid pubkey 11111111111111111111111111111111111111111111
processor-1 | {"level":2,"time":1754219321641,"ns":"sqd:processor:mapping","msg":"Saving v1 transaction history and comments"}
processor-1 | {"level":2,"time":1754219330587,"ns":"sqd:processor:mapping","msg":"Flushing changes to storage, this can take a while..."}
processor-1 | {"level":2,"time":1754219330587,"ns":"sqd:processor:mapping","msg":"(about ~5 minutes for all g1 history and genesis data)"}
Donc ça a l’air de marcher.
Et non, ce n’était pas ça, mais l’utilisation du genesis raw au lieu du genesis.