How we switched to Java 21 virtual threads and got a deadloc