ClickHouse / ClickHouse/clickhouse-java

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

Đang mở
#1,819 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
area:network bug r2dbc
Ngôn ngữ chính
Java
Star
1.6k
Fork
636
Merge trung bình
2 ngày 23 giờ
Pull request đã merge (30 ngày)
29

Mô tả

### 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu trong clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseResult.java, so sánh phần triển khai map ở các dòng được tham chiếu với flatMap. Tái hiện ví dụ được cung cấp bằng một biFunction ném IllegalArgumentException, sau đó xác minh rằng ngoại lệ được truyền đi thay vì chỉ được ghi nhật ký.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
api, database
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.