There's a lot of other theories in this thread, but the StringBuilder lock is what I can't get over from the stack traces.
at java.lang.AbstractStringBuilder.ensureCapacityInternal(java.base@17/AbstractStringBuilder.java:228)
- parking to wait for <0x0000000088eee648> (a scala.concurrent.impl.ExecutionContextImpl$$anon$3)
at java.lang.AbstractStringBuilder.append(java.base@17/AbstractStringBuilder.java:582)
That's a lock on a scala object in the middle of a java lang call-stack.
How is that lock happening?
The comments of ensureCapacityInternal explicitly says
/**
* This method has the same contract as ensureCapacity, but is
* never synchronized.
*/
private void ensureCapacityInternal(int minimumCapacity) {
How is that lock happening?
The comments of ensureCapacityInternal explicitly says