akarnokd / akarnokd/reactive4java

Concurrency operators exhibit registration race condition

Aberta
#3 0 comentários 0 reações 0 responsáveis Ver no GitHub
auto-migrated Priority-Medium Type-Defect
Linguagem predominante
Java
Estrelas
3
Forks
0
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.