akarnokd / akarnokd/reactive4java

Concurrency operators exhibit registration race condition

Ouverte
#3 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
auto-migrated Priority-Medium Type-Defect
Langage dominant
Java
Étoiles
3
Forks
0
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

```
Operators working with multiple sources have problem with initial registration.
Depending on the operator.

The first problem is that the registration and remembering is usually not
protected by a lock, or the half constucted defaultobserver escapes. I.e., when
the registration happens, the source might send values immediately.

The second problem is that if a registration triggers execution which brings
the observer into a completed state, any subsequent registrations are
unnecessary, but still happen and will bombard the defaultobserver indefinitely.

Solution:

- protect the sub-registrations with the same observer lock.
- after each registration, check if the observer completed and do not register
further

Therefore the defaultobserver has 5 "messages"

onNext, onError, onFinish, onClose, onRegister

```

Original issue reported on code.google.com by `akarn...@gmail.com` on 4 Apr 2012 at 5:54

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par localiser les opérateurs de concurrence et les chemins d’enregistrement de DefaultObserver décrits dans l’issue, puis examinez comment les sous-enregistrements et la finalisation de l’observer sont synchronisés. Reproduisez un cas où un enregistrement émet ou se termine immédiatement. Le travail est terminé lorsque les enregistrements sont protégés par le verrou de l’observer et qu’aucune autre source n’est enregistrée après la finalisation, avec une couverture des cinq messages de l’observer.

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

Évaluation

Stack technique
java
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

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