ClickHouse / ClickHouse/clickhouse-java

R2DBC client: ClickHouseResult map implementation logs but doesn't propagate exceptions.

Open
#1,819 2 comments 0 reactions 0 assignees View on GitHub
area:network bug r2dbc
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.