+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
