Skip to content

Commit c9f7ca9

Browse files
authored
Merge pull request #478 from Vlatombe/close-session-on-exception
If an exception occurs while launching an agent, the underlying connection and session should be closed
2 parents 6fe3406 + ae479e1 commit c9f7ca9

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/main/java/com/google/jenkins/plugins/computeengine/ComputeEngineComputerLauncher.java

+13-4
Original file line numberDiff line numberDiff line change
@@ -280,10 +280,11 @@ private void launch(ComputeEngineComputer computer, TaskListener listener) {
280280
return;
281281
}
282282

283-
final Connection conn;
283+
Connection conn = null;
284284
Optional<Connection> cleanupConn;
285285
PrintStream logger = listener.getLogger();
286286
logInfo(computer, listener, "Launching instance: " + node.getNodeName());
287+
Session sess = null;
287288
try {
288289
cleanupConn = setupConnection(node, computer, listener);
289290
if (!cleanupConn.isPresent()) {
@@ -298,16 +299,24 @@ private void launch(ComputeEngineComputer computer, TaskListener listener) {
298299
copyAgentJar(computer, conn, listener, jenkinsDir);
299300
String launchString = getJavaLaunchString(javaExecPath, jenkinsDir);
300301
logInfo(computer, listener, "Launching Jenkins agent via plugin SSH: " + launchString);
301-
final Session sess = conn.openSession();
302+
sess = conn.openSession();
302303
sess.execCommand(launchString);
304+
Session finalSess = sess;
305+
Connection finalConn = conn;
303306
computer.setChannel(sess.getStdout(), sess.getStdin(), logger, new Channel.Listener() {
304307
@Override
305308
public void onClosed(Channel channel, IOException cause) {
306-
sess.close();
307-
conn.close();
309+
finalSess.close();
310+
finalConn.close();
308311
}
309312
});
310313
} catch (Exception e) {
314+
if (sess != null) {
315+
sess.close();
316+
}
317+
if (conn != null) {
318+
conn.close();
319+
}
311320
logException(computer, listener, "Error: ", e);
312321
}
313322
}

0 commit comments

Comments
 (0)