Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-31055] Note theoretical race condtion
Seems rather unlikely, but none the less it is a possibility. Not sure how we should handle this though:

* We do not want to hold the Queue lock while performing I/O as that will grind everything to a halt
* We do not want a big fat lock on all nodes
* If we have a per-node lock then the save everything method may have to grab them all

In short, it gets ugly real fast.

For now, I believe that the risk is very low as releasing a lock does not intrinsically deschedule a currently running thread so the likely course of events is that the thread will release the lock and at least start the save before a competing thread could acquire the lock update remove the node release the lock and delete the node's directory
  • Loading branch information
stephenc committed Oct 21, 2015
1 parent 8e24f69 commit d2276c3
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions core/src/main/java/jenkins/model/Nodes.java
Expand Up @@ -138,6 +138,7 @@ public void run() {
jenkins.trimLabels();
}
});
// TODO there is a theoretical race whereby the node instance is updated/removed after lock release
persistNode(node);
}
}
Expand Down Expand Up @@ -191,6 +192,7 @@ public Boolean call() throws Exception {
exists = false;
}
if (exists) {
// TODO there is a theoretical race whereby the node instance is updated/removed after lock release
persistNode(node);
return true;
}
Expand Down

0 comments on commit d2276c3

Please sign in to comment.