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

Reply via email to