Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Suppressed a confusing 2nd error message.
  • Loading branch information
kohsuke committed Sep 22, 2013
1 parent 6abffa2 commit 1b22559
Showing 1 changed file with 21 additions and 6 deletions.
27 changes: 21 additions & 6 deletions core/src/main/java/hudson/tasks/CommandInterpreter.java
Expand Up @@ -31,9 +31,12 @@
import hudson.model.BuildListener;
import hudson.model.Node;
import hudson.model.TaskListener;
import hudson.remoting.ChannelClosedException;

import java.io.IOException;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nonnull;

/**
Expand Down Expand Up @@ -70,6 +73,7 @@ public boolean perform(AbstractBuild<?,?> build, Launcher launcher, TaskListener
throw new NullPointerException("no workspace from node " + node + " which is computer " + node.toComputer() + " and has channel " + node.getChannel());
}
FilePath script=null;
int r = -1;
try {
try {
script = createScriptFile(ws);
Expand All @@ -79,7 +83,6 @@ public boolean perform(AbstractBuild<?,?> build, Launcher launcher, TaskListener
return false;
}

int r;
try {
EnvVars envVars = build.getEnvironment(listener);
// on Windows environment variables are converted to all upper case,
Expand All @@ -90,18 +93,28 @@ public boolean perform(AbstractBuild<?,?> build, Launcher launcher, TaskListener

r = launcher.launch().cmds(buildCommandLine(script)).envs(envVars).stdout(listener).pwd(ws).join();
} catch (IOException e) {
Util.displayIOException(e,listener);
Util.displayIOException(e, listener);
e.printStackTrace(listener.fatalError(Messages.CommandInterpreter_CommandFailed()));
r = -1;
}
return r==0;
} finally {
try {
if(script!=null)
script.delete();
script.delete();
} catch (IOException e) {
Util.displayIOException(e,listener);
e.printStackTrace( listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
if (r==-1 && e.getCause() instanceof ChannelClosedException) {
// JENKINS-5073
// r==-1 only when the execution of the command resulted in IOException,
// and we've already reported that error. A common error there is channel
// losing a connection, and in that case we don't want to confuse users
// by reporting the 2nd problem. Technically the 1st exception may not be
// a channel closed error, but that's rare enough, and JENKINS-5073 is common enough
// that this suppressing of the error would be justified
LOGGER.log(Level.FINE, "Script deletion failed", e);
} else {
Util.displayIOException(e,listener);
e.printStackTrace( listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
}
} catch (Exception e) {
e.printStackTrace( listener.fatalError(Messages.CommandInterpreter_UnableToDelete(script)) );
}
Expand All @@ -120,4 +133,6 @@ public FilePath createScriptFile(@Nonnull FilePath dir) throws IOException, Inte
protected abstract String getContents();

protected abstract String getFileExtension();

private static final Logger LOGGER = Logger.getLogger(CommandInterpreter.class.getName());
}

0 comments on commit 1b22559

Please sign in to comment.