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
