Bug #2161
Application Threadpool gets confused on interruption
Start date:
02.01.2024
Due date:
% Done:
0%
Estimated time:
origin:
Description
When interrupting a thread in the thread pool, it will terminate but still be in the pool. This happens in WorkerThread.java:
if (this.wm.taskCompleted(this)) {
synchronized (this) {
if (!this.kicked) {
// only if not having been kicked between being put into
// the pool and entering this block
waiting = true;
try {
this.wait();
} catch (InterruptedException e) {
logger.fine("Thread interrupted: "+this);
} finally {
this.waiting = false;
}
} else
this.kicked = false;
}
} else
synchronized (this) {} // also to comply to the memory model
The code is super outdated and far to complex.
Acceptance Criteria¶
- The thread pool implementation is based on the java.util.concurrency executors (✓)
- JMX names are preserved (✓)
- The fix is merged into master (✓)