Feature Request: Add `Observable.usingWhen()` for resources generated by a `Publisher`
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 30/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Estagnada
- Stack de tecnologia
- java
- Domínio
- backend-api-design
Direção de pesquisa
Comece revisando o comportamento existente de Single.using() e comparando-o com a semântica de Mono.usingWhen() do Reactor. Defina o comportamento de Observable.usingWhen() para a limpeza em caso de sucesso, erro, término e descarte, e adicione cobertura para esses casos. O trabalho estará concluído quando houver suporte nativo para recursos criados por Publisher e para sua limpeza.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Version: 3.1.6
In Reactor, there is Mono.usingWhen(), which works similarly to Mono.using(), but supports resources that are generated and cleaned up with a Publisher.
For example, here's a use case in r2dbc-pool:
Mono<Object> result = Mono.usingWhen(
connectionFactory.create(), // Publisher<Connection>
connection -> executeQuery(connection),
Connection::close // Publisher<Void>
);
In RxJava, we have Single.using(), which works the same way as Mono.using(), so there's no support for reactive resource generation/cleanup. I was thinking of doing something like this:
Single<Object> result = Single
.fromPublisher(connectionFactory.create())
.flatMap(connection -> executeQuery(connection)
.flatMap(result -> Completable
.fromPublisher(connection.close())
.toSingleDefault(result)));
However, this does not handle cases like connection cleanup on error, dispose or terminate. The .doOnXyz() methods would not suffice, so I'm guessing this would require a custom Observable implementation, unless I'm missing something obvious. I've also checked RxJavaExtensions for anything similar to what I'm trying to achieve, but I was not able to find anything, nor could I find anything relevant on Stack Overflow.
I currently have the option of just using Mono.usingWhen() and then convert it to a Single, but it would be nice to have this natively available in RxJava. Would you be willing to add support for usingWhen()?
- Linguagem predominante
- Java
- Estrelas
- 48.2k
- Forks
- 7.6k
- Merge médio
- 3h 2min
- PRs com merge (30d)
- 27
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ReactiveX/RxJava
-
4.x Streamable Test-Failures
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
Mantenedores costumam responder em até 1 dia
-
4.x AI Enhancement Streamable
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
ReactiveX/RxJava#8299 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
4.x: FlowableBufferTest > longTimeAction() FAILEDTalvez livre de novo @akarnokd assumiu há 81 dias e não há nenhum pull request aberto. Aberta4.x Test-Failures
ReactiveX/RxJava#8280 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
4.x Discussion
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
Mantenedores costumam responder em até 1 dia
-
4.x PR welcome Test Test-Failures
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
ReactiveX/RxJava#8075 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de ReactiveX/RxJava
Issues semelhantes
-
[BUG] micronaut-serde-oracle-jdbc-json brings a second OJDBC driver onto the runtime classpathTalvez já em andamento @ZARAYACH assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
micronaut-projects/micronaut-serialization#1494 · 4 comentários ·
Mantenedores costumam responder em até 2 dias
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 73/100
Mantenedores costumam responder em até 2 dias
-
code-health feature/sync OS/Android QA/Test-Plan-Specified QA/Yes
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
brave/brave-browser#60327 ·
Mantenedores costumam responder em até 1 dia
-
Type: Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
it-at-m/raumreservierung#383 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
aws/context-ontology-accelerator#325 ·
Mantenedores costumam responder em até 1 dia