Skip to content

Commit dde23cd

Browse files
committed
[JENKINS-72441] Prevent lock contention on KubernetesLauncher#isLaunchSupported
1 parent 7b3f77f commit dde23cd

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/main/java/org/csanchez/jenkins/plugins/kubernetes/KubernetesLauncher.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import java.util.List;
5050
import java.util.Map;
5151
import java.util.concurrent.TimeUnit;
52+
import java.util.concurrent.atomic.AtomicBoolean;
5253
import java.util.logging.Level;
5354
import java.util.logging.Logger;
5455
import java.util.stream.Collectors;
@@ -69,7 +70,7 @@ public class KubernetesLauncher extends JNLPLauncher {
6970

7071
private static final Logger LOGGER = Logger.getLogger(KubernetesLauncher.class.getName());
7172

72-
private boolean launched;
73+
private final AtomicBoolean launched = new AtomicBoolean(false);
7374

7475
/**
7576
* Provisioning exception if any.
@@ -87,8 +88,8 @@ public KubernetesLauncher() {
8788
}
8889

8990
@Override
90-
public synchronized boolean isLaunchSupported() {
91-
return !launched;
91+
public boolean isLaunchSupported() {
92+
return !launched.get();
9293
}
9394

9495
@Override
@@ -105,7 +106,7 @@ public synchronized void launch(SlaveComputer computer, TaskListener listener) {
105106
if (node == null) {
106107
throw new IllegalStateException("Node has been removed, cannot launch " + computer.getName());
107108
}
108-
if (launched) {
109+
if (launched.get()) {
109110
LOGGER.log(INFO, "Agent has already been launched, activating: {0}", node.getNodeName());
110111
computer.setAcceptingTasks(true);
111112
return;
@@ -241,7 +242,7 @@ else if (httpCode == 409 && e.getMessage().contains("Operation cannot be fulfill
241242
}
242243

243244
computer.setAcceptingTasks(true);
244-
launched = true;
245+
launched.set(true);
245246
try {
246247
// We need to persist the "launched" setting...
247248
node.save();

0 commit comments

Comments
 (0)