Details
-
Type:
Bug
-
Status: Resolved (View Workflow)
-
Priority:
Major
-
Resolution: Fixed
-
Component/s: core
-
Labels:
-
Similar Issues:
Description
If Run.onLoad takes a little while to run, or generally if RunMap.retrieve is not instantaneous, a race condition can arise. Say thread 1 calls getByNumber for a Run which in fact exists on disk (with a numeric symlink). search will call load(int, null), which will delegate to load(File, null) which acquires the lock; and then blocks for a while in retrieve. Then thread 2 calls getById with the ID of the same build. index.byId is still empty, so it jumps to load(String, null) and then blocks waiting to enter load(File, null). Now thread 1 finishes retrieve, stores the newly loaded Run in the index, and returns. When the lock is released, thread 2 enters it, loads another copy of the same Run, and stores it in the index, clobbering the first entry, and returns that.
Seems to be fixable by making getById double-check the index while holding the lock, forcing it to wait for the first thread to store an entry. (Or could just check under lock whether snapshot != index, and if so, retry.)
Also load(File, null) should assert that there is no current entry for a build before it stores one.
Attachments
Issue Links
- depends on
-
JENKINS-33219 Job.updateNextBuildNumber can cause deadlock
-
- Open
-
- is duplicated by
-
JENKINS-38509 'java.lang.IllegalStateException: already existed; will not overwite' error for pipeline builds over time
-
- Resolved
-
-
JENKINS-32755 ATH test timeout
-
- Closed
-
- is related to
-
JENKINS-26761 WorkflowJob.getSCMs throws NullPointerException from notifyCommit hooks after Jenkins Restart
-
- Resolved
-
-
JENKINS-27532 WorkflowTest.executorStepRestart failures
-
- Resolved
-
-
JENKINS-24380 Use build numbers as IDs
-
- Resolved
-
- relates to
-
JENKINS-37121 WorkspaceListLeasePickle should help diagnose locked workspaces
-
- Resolved
-
- links to
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue is related to |
Resolution | Duplicate [ 3 ] | |
Status | Open [ 1 ] | Resolved [ 5 ] |
Link |
This issue is related to |
Resolution | Duplicate [ 3 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Status | Reopened [ 4 ] | Open [ 1 ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Remote Link | This issue links to "PR 1989 (Web Link)" [ 13757 ] |
Labels | lazy-loading threads | lazy-loading lts-candidate threads |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Resolved [ 5 ] |
Link |
This issue is related to |
Link |
This issue is duplicated by |
Labels | lazy-loading lts-candidate threads | 1.642.3-fixed lazy-loading threads |
Link | This issue depends on JENKINS-33219 [ JENKINS-33219 ] |
Workflow | JNJira [ 154881 ] | JNJira + In-Review [ 195067 ] |
Link |
This issue relates to |
Link |
This issue is duplicated by |