apache / apache/iotdb-client-rust
Session::open does not fail over when openSession/requestStatementId fails (only TCP-layer failover)
- Ngôn ngữ chính
- Rust
- Star
- 1
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
`Session::open` only fails over at the TCP layer: the loop over `config.endpoints` opens a `Connection`, but `authenticate()` (openSession + requestStatementId) runs **after** the loop. `reconnect()` does the opposite — it retries connect **and** authenticate for every endpoint.
With a 3-node cluster where one node accepts TCP but fails `openSession` (e.g. overloaded, misconfigured, or wedged by the missing socket timeout), roughly one `open()` in three fails while 2 of 3 nodes are healthy.
Fix: move the `authenticate()` step inside the endpoint loop, mirroring `reconnect()`.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Bắt đầu tại Session::open và so sánh vòng lặp endpoint của nó với reconnect(). Theo dõi authenticate(), bao gồm openSession và requestStatementId, để hiểu mỗi lỗi được xử lý ở đâu. Hoàn thành nghĩa là các lỗi xác thực khiến endpoint được cấu hình tiếp theo được thử, phù hợp với hành vi của reconnect(); issue không nêu tên tệp kiểm thử nào.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- rust
- Lĩnh vực
- databases
- Loại issue
- Lỗi
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 78/100