+1

On Tue, Oct 6, 2026 at 12:21 PM Aleksandr Chesnokov
<[email protected]> wrote:
>
> Hi all,
>
> A short update: I fixed IGNITE-29086, and the patch is merged.
> https://issues.apache.org/jira/browse/IGNITE-29086
> https://github.com/apache/ignite/pull/13642
>
> One important detail is that the bug was in production code, not in tests, 
> and it
> happens only on JDK 21.0.5 and newer.
>
> The root cause was JDK-8323782 (https://bugs.openjdk.org/browse/JDK-8323782), 
> which
> changed the order of steps in Thread.interrupt(). Now one interrupt() can do 
> two
> things: first it wakes up a thread from wait(), and then it closes the 
> FileChannel
> that this thread writes to. Because of this, our writer thread lost the last 
> records
> on stop.
>
> So the key point is that if we use this pattern:
>
> try {
>     ...
>     synchronized (...) {
>         wait();
>     }
> }
> catch (InterruptedException e) {
>     write();
> }
>
> one Thread.interrupt() may interrupt both wait() and write().
>
> I looked for the same pattern in the main code and didn't find other places 
> with it.
>
> I just want to highlight that there can be non-obvious bugs related to the JDK
> upgrade, and I suggest we double-check our JDK 21 nightly runs before we 
> declare
> JDK 21 support.
>
> Best regards,
> Aleksandr Chesnokov



-- 
Best wishes,
Amelchev Nikita

Reply via email to