celestiaorg / celestiaorg/celestia-node

architecture (share/Getter): Getter should be atomic

Offen
#1,663 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
area:shares enhancement
Vorherrschende Sprache
Go
Sterne
996
Forks
1.1k
Ø Merge
1 T. 6 Std.
Gemergte PRs (30 T.)
34

Beschreibung

### Implementation ideas

Current high order getter [CascadeGetter](https://github.com/celestiaorg/celestia-node/pull/1628) implementation assumes that if underlying getter request has been canceled by context, the overall getter operation should be noop, allowing next getter to start from unaffected state. Thus every getter implementation is required to satisfy atomic property of transaction. Also getter should treat external context cancelation as expected at any time and update internal state(if any) accordingly (e.g .shrex.Getter peer manager)

For example, shrex.Getter(not finished yet) should make more complex decision on peer in case of context.Deadline, taking into account possibility of external ctx cancelation.

TeeGetter should either finish write operation, or rollback internal storage state.

Future contributions to existing or introduced Getters should always take transactional property into account. This could affect introduction of caching, for example

Need to check all getters that are already merged and in development to identify if there is need to be any enhancements:
- [x] #1488
- [x] #1489
- [x] #1490
- [x] #1491
- [ ] #1535

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit der Überprüfung der Implementierung von CascadeGetter in PR #1628 und der in #1488, #1489, #1490, #1491 und #1535 nachverfolgten Getter-Arbeiten. Untersuche shrex.Getter und TeeGetter hinsichtlich der Behandlung von Abbrüchen und Zustandsänderungen. Die Arbeit ist abgeschlossen, wenn die betroffenen Getter bei einem Abbruch des Kontexts ihr atomares Verhalten beibehalten und der verbleibende Checklistenpunkt bearbeitet wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
go
Bereich
backend, distributed-systems
Issue-Typ
Refactoring
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.