-
Improvement
-
Resolution: Fixed
-
Minor
A very large set of OldData can take a long time to discard. While this is running, most Jenkins operations which save any data are blocked.
https://gist.github.com/recampbell/9336d3a32270e75a9333
doDiscard is synchronized and hudson.diagnosis.OldDataMonitor#remove also wants to lock OldDataMonitor. Most threads eventually lock when saving something, at least until the doDiscard eventually completes.
- is duplicated by
-
JENKINS-24303 Discarding old data can block several threads removing/reporting unreadable data.
-
- Resolved
-
[JENKINS-24763] Long running OldDataMonitor.doDiscard() results in thread starvation
Description |
Original:
A very large set of OldData can take a long time to discard. While this is running, most Jenkins operations which save any data are blocked. https://gist.github.com/recampbell/9336d3a32270e75a9333 doDiscard is synchronized and hudson.diagnosis.OldDataMonitor#remove also wants to lock OldDataMonitor most threads eventually lock when saving something, at least until the doDiscard eventually completes. |
New:
A very large set of OldData can take a long time to discard. While this is running, most Jenkins operations which save any data are blocked. https://gist.github.com/recampbell/9336d3a32270e75a9333 doDiscard is synchronized and hudson.diagnosis.OldDataMonitor#remove also wants to lock OldDataMonitor. Most threads eventually lock when saving something, at least until the doDiscard eventually completes. |
Priority | Original: Major [ 3 ] | New: Minor [ 4 ] |
Summary | Original: Long running OldDataMonitor.doDiscard() results in livelocks | New: Long running OldDataMonitor.doDiscard() results in thread starvation |
Issue Type | Original: Bug [ 1 ] | New: Improvement [ 4 ] |
Appears to be a rather minor issue (with the workaround being to wait for ODM to finish).
In what way is this a livelock?