Hi Yuan, thank you very much!
Best Yann On 10/13/26 10:00, Yuan Tian wrote:
Hi Yann, Thanks for the clear report and the PR. I reviewed PR #18794 <https://github.com/apache/iotdb/pull/18794> and confirmed the failure path you described: the null RPC result leads to an NPE, and SessionPool's RuntimeException handler puts the broken session back into the queue. Throwing IoTDBConnectionException with the last TException as its cause in the shared helper looks correct. It preserves the underlying failure and allows the pool's existing eviction and replacement logic to run, while leaving successful responses and server-reported errors on their existing paths. I reproduced the three behavioral regression failures on the base revision. With the fix, all four new tests and the related connection/pool tests passed locally (141 tests in total). The change looks good to me. We will include this fix in the 2.0.12 release. There is no need to create a separate issue; this PR is sufficient. Thanks again for the contribution! Best regards, ------------------------- Yuan Tian On Tue, 13 Oct 2026 07:20:19 +0000, Yann Massard <[email protected]> wrote: Hi all, I'm Yann Massard, a developer at AVILOO. We want to use IoTDB through the Java `SessionPool`. But we discovered a problem: After short connectivity losses (DataNode pod restarts, ConfigNode leader churn), our client got stuck: every query failed with `NullPointerException: ... because "execResp" is null` until we restarted the JVM. The problem is when `SessionConnection.callWithRetryAndReconnect` runs out of retries, it returns a null result instead of throwing. Callers then throw an NPE. The real `TException` is lost, and `SessionPool` puts the broken session back into its queue instead of evicting it. The fix is small: `callWithRetryAndReconnect` now throws `IoTDBConnectionException` with the `TException` as its cause, so `SessionPool`'s existing eviction path takes over. It's one helper change that covers all callers. I also wrote some tests to demonstrate the problem / fix. - PR: https://github.com/apache/iotdb/pull/18794 - Issue: None yet. Do you want me to create one or is the PR enough? I'd be grateful if someone familiar with the session client could take a look at the PR. Copilot seems to be happy with it. Best, Yann
