ClickHouse / ClickHouse/clickhouse-java
R2DBC client: ClickHouseResult map implementation logs but doesn't propagate exceptions.
- Dominant language
- Java
- Stars
- 1.6k
- Forks
- 636
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 28
Description
### Describe the bug
For the R2DBC client, in `ClickHouseResult` class, the `map` method implementation logs but doesn't propagate exceptions. However, in the same class the `flatMap` method implementation both logs and propagates exceptions. See code:
- https://github.com/ClickHouse/clickhouse-java/blob/dfb161bdf367b4e36d26469600a8a80172c3fb5a/clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseResult.java#L62-L64
- https://github.com/ClickHouse/clickhouse-java/blob/dfb161bdf367b4e36d26469600a8a80172c3fb5a/clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseResult.java#L82-L85
### Steps to reproduce
1. Execute any statement producing a`Result` object.
2. Any error triggered within the `biFunction` argument passed to `map` will be logged but not propagated. For instance, just throw a new `IllegalArgumentException`.
3. Exception is logged but not propagated.
### Expected behaviour
Unpropagated exceptions highly increases the chances of errors being unnoticed, unless logs are observed or analysed.
The expected behaviour is propagating the exception, like `flatMap` method does.
### Code example
```java
import io.r2dbc.spi.ConnectionFactory;
import reactor.core.publisher.Mono;
public class ClickHouseRepository {
ConnectionFactory connectionFactory;
Mono example() {
return Mono.from(connectionFactory.create())
.flatMapMany(connection -> connection.createStatement("SELECT 1").execute())
.map(result -> result.map((row, rowMetadata) -> new IllegalArgumentException()))
.then();
}
}
```
### Error log
```
Provided function caused exception: IllegalArgumentException
```
However, exception is just logged and not propagated.
### Configuration
#### Environment
* Client version: 0.6.5.
* Language version: Java.
* OS: Mac, Linux.
#### ClickHouse server
* ClickHouse Server version: 24.3.8.13.
* ClickHouse Server non-default settings, if any: N/A.
* `CREATE TABLE` statements for tables involved: N/A.
* Sample data for all these tables, use [clickhouse-obfuscator](https://github.com/ClickHouse/ClickHouse/blob/master/programs/obfuscator/Obfuscator.cpp#L42-L80) if necessary: N/A.
Contributor guide
Assessment
This issue has not been assessed yet.