Feature Request: Add `Observable.usingWhen()` for resources generated by a `Publisher`
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- backend-api-design
Línea de trabajo
Empieza revisando el comportamiento existente de Single.using() y comparándolo con la semántica de Mono.usingWhen() de Reactor. Define el comportamiento de Observable.usingWhen() para la limpieza en caso de éxito, error, terminación y disposición, y añade cobertura para esos casos. Se considera terminado cuando haya compatibilidad nativa con recursos creados por Publisher y con su limpieza.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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()?
- Lenguaje dominante
- Java
- Estrellas
- 48.2k
- Forks
- 7.6k
- Merge medio
- 3 h 2 min
- PR fusionados (30 d)
- 27
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ReactiveX/RxJava
-
4.x Streamable Test-Failures
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
-
4.x AI Enhancement Streamable
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
ReactiveX/RxJava#8299 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
4.x: FlowableBufferTest > longTimeAction() FAILEDQuizá libre de nuevo @akarnokd la tomó hace 81 días y no hay ningún pull request abierto. Abierto4.x Test-Failures
ReactiveX/RxJava#8280 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
4.x Discussion
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
4.x PR welcome Test Test-Failures
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
ReactiveX/RxJava#8075 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de ReactiveX/RxJava
Issues similares
-
[BUG] micronaut-serde-oracle-jdbc-json brings a second OJDBC driver onto the runtime classpathPosiblemente ocupada @ZARAYACH la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
micronaut-projects/micronaut-serialization#1494 · 4 comentarios ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 2 días
-
code-health feature/sync OS/Android QA/Test-Plan-Specified QA/Yes
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
brave/brave-browser#60327 ·
Los mantenedores suelen responder en 1 día
-
Type: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
it-at-m/raumreservierung#383 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
aws/context-ontology-accelerator#325 ·
Los mantenedores suelen responder en 1 día