celestiaorg / celestiaorg/celestia-node

architecture (share/Getter): Getter should be atomic

Ouverte
#1,663 1 commentaire 1 réaction 0 personnes assignées Voir sur GitHub
area:shares enhancement
Langage dominant
Go
Étoiles
996
Forks
1.1k
Merge moyen
1 j 6 h
PR mergées (30 j)
34

Description

### 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

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par examiner l’implémentation de CascadeGetter dans PR #1628 ainsi que le travail sur les getters suivi dans #1488, #1489, #1490, #1491 et #1535. Examinez shrex.Getter et TeeGetter pour leur gestion de l’annulation et des changements d’état. Le travail est considéré comme terminé lorsque les getters concernés préservent leur comportement atomique lors de l’annulation du contexte et que l’élément restant de la checklist a été traité.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
go
Domaine
backend, distributed-systems
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.