@@ -280,10 +280,11 @@ private void launch(ComputeEngineComputer computer, TaskListener listener) {
280
280
return ;
281
281
}
282
282
283
- final Connection conn ;
283
+ Connection conn = null ;
284
284
Optional <Connection > cleanupConn ;
285
285
PrintStream logger = listener .getLogger ();
286
286
logInfo (computer , listener , "Launching instance: " + node .getNodeName ());
287
+ Session sess = null ;
287
288
try {
288
289
cleanupConn = setupConnection (node , computer , listener );
289
290
if (!cleanupConn .isPresent ()) {
@@ -298,16 +299,24 @@ private void launch(ComputeEngineComputer computer, TaskListener listener) {
298
299
copyAgentJar (computer , conn , listener , jenkinsDir );
299
300
String launchString = getJavaLaunchString (javaExecPath , jenkinsDir );
300
301
logInfo (computer , listener , "Launching Jenkins agent via plugin SSH: " + launchString );
301
- final Session sess = conn .openSession ();
302
+ sess = conn .openSession ();
302
303
sess .execCommand (launchString );
304
+ Session finalSess = sess ;
305
+ Connection finalConn = conn ;
303
306
computer .setChannel (sess .getStdout (), sess .getStdin (), logger , new Channel .Listener () {
304
307
@ Override
305
308
public void onClosed (Channel channel , IOException cause ) {
306
- sess .close ();
307
- conn .close ();
309
+ finalSess .close ();
310
+ finalConn .close ();
308
311
}
309
312
});
310
313
} catch (Exception e ) {
314
+ if (sess != null ) {
315
+ sess .close ();
316
+ }
317
+ if (conn != null ) {
318
+ conn .close ();
319
+ }
311
320
logException (computer , listener , "Error: " , e );
312
321
}
313
322
}
0 commit comments