# Construction conteneurs de l’indexeur Squid pour la ĞTest

**URL:** https://forum.duniter.org/t/construction-conteneurs-de-l-indexeur-squid-pour-la-gtest/13220
**Category:** Indexers
**Tags:** subsquid, gtest, arm
**Created:** [26 July 2025 09:03 UTC](https://forum.duniter.org/t/construction-conteneurs-de-l-indexeur-squid-pour-la-gtest/13220 "2025-07-26T09:03:10Z")
**Posts on this page:** 1
**Showing post:** 12

<div class="post-metadata">

### Author: ![HugoTrentesaux](https://forum.duniter.org/user_avatar/forum.duniter.org/hugotrentesaux/32/6396_2.png) [@HugoTrentesaux](https://forum.duniter.org/u/HugoTrentesaux)
#### Post date: [3 August 2025 11:11 UTC](https://forum.duniter.org/t/construction-conteneurs-de-l-indexeur-squid-pour-la-gtest/13220/12 "2025-08-03T11:11:58Z")

</div>

Comme discuté lors de la visio dev du 1er août ([Development talks - #71 by Moul](https://forum.duniter.org/t/development-talks/12627/71)), 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](https://git.duniter.org/nodes/duniter-squid/-/blob/main/docker-compose.yml).

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`](https://git.duniter.org/nodes/duniter-squid/-/blob/main/.env.example?ref_type=heads).

J’ai fait un essai en local avec `RPC_ENDPOINT=ws://duniter-archive:9944`.

```auto
$ docker compose up -d && docker compose logs -f processor

```

Je reproduis bien l’erreur

```auto
processor-1 | {"level":5,"time":1754217221271,"ns":"sqd:processor","err":{"stack":"TypeError: Cannot read properties of undefined (reading 'patch')

```

Ça provient de la ligne :

```auto
// 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`](https://git.duniter.org/nodes/duniter-squid/-/blob/main/scripts/download_genesis.sh?ref_type=heads), 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](https://git.duniter.org/nodes/rust/duniter-v2s/-/releases). 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 :

```sh
$ 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.

> [@HugoTrentesaux](#):
>
> C’est sûrement lié aux données genesis, et plus précisément au “blockNumber”, modifié dans ce commit :

Et non, ce n’était pas ça, mais l’utilisation du genesis raw au lieu du genesis.

---

_[View the full topic](https://forum.duniter.org/t/construction-conteneurs-de-l-indexeur-squid-pour-la-gtest/13220)._
