paritytech / paritytech/try-runtime-cli
Disk-backed externalities
Nessuno ha ancora preso questa issue.
- Lingua principale
- Rust
- Stelle
- 25
- Fork
- 29
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Original issue https://github.com/paritytech/substrate/issues/14076
Prelude
Discussion in https://github.com/paritytech/substrate/issues/13562 expanded to include various topics other than lazy-download, including improving general performance and using a disk-backed database.
I am creating this issue to separate the discussion and progress around allowing the try-runtime-cli to accept a DB path for reading state, rather than loading all state into memory.
Motivation
Creating snapshots and loading state into memory is not a significant issue for chains like Polkadot and Kusama, but it can be for heavier-weight chains like Moonbeam with extensive state.
On these heavy chains:
- It takes a long time to create a snapshot, and the snapshot size is considerable.
- The state might not fit into memory, depending on the chain and machine specifications.
- It would provide a much better developer experience for using try-runtime-cli with these chains if developers could skip worrying about that and just specify the path to their existing database instead.
Implementation ideas
TestExternalitiescurrently has a hardcodedInMemoryBackendas a generic parameter. However, that could be updated to a more genericsp_state_machine::Backend.- Once that change is made, we should be able to use either an
InMemoryBackendorDiskDbBackend(which is already implemented in fudge) inTestExternalities. - We can add a new
Modetoremote-externalitiescalled something likeDisk, so we would haveOnline,Offline(perhaps rename this toSnap), andDisk. - Finally, we can update the CLI to accept
live,snap, and a new optiondbwhen specifying where to get state. If the user choosesdb, they pass the path, and theTestExternalitieswill be initialized with aDiskDbBackendinstead of theInMemoryBackend.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia da TestExternalities, dal suo parametro InMemoryBackend codificato staticamente e dalla gestione di remote-externalities Mode descritta nell’issue. Esamina l’interfaccia sp_state_machine::Backend e l’implementazione esistente di DiskDbBackend in fudge, quindi traccia il modo in cui la CLI seleziona attualmente le sorgenti di stato live e snap. Il lavoro è completo quando un percorso del database può selezionare uno stato basato su disco senza caricare l’intero snapshot in memoria.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust
- Ambito
- cli, databases, testing
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 25/100