提交 e84fd0de 编写于 作者: A Andrea Scarpino 提交者: Oliver Gondža

JENKINS-42658: fix NPE when the slave if offline

(cherry picked from commit 10a52c10)
上级 8921fd77
......@@ -76,6 +76,7 @@ import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.interceptor.RequirePOST;
import javax.annotation.CheckForNull;
import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;
import javax.annotation.OverridingMethodsMustInvokeSuper;
import java.io.File;
......@@ -454,18 +455,27 @@ public class SlaveComputer extends Computer {
/**
* Shows {@link Channel#classLoadingCount}.
* @return Requested value or {@code -1} if the agent is offline.
* @since 1.495
*/
@CheckReturnValue
public int getClassLoadingCount() throws IOException, InterruptedException {
if (channel == null) {
return -1;
}
return channel.call(new LoadingCount(false));
}
/**
* Shows {@link Channel#classLoadingPrefetchCacheCount}.
* @return -1 in case that capability is not supported
* @return Requested value or {@code -1} in case that capability is not supported or if the agent is offline.
* @since 1.519
*/
@CheckReturnValue
public int getClassLoadingPrefetchCacheCount() throws IOException, InterruptedException {
if (channel == null) {
return -1;
}
if (!channel.remoteCapability.supportsPrefetch()) {
return -1;
}
......@@ -474,25 +484,40 @@ public class SlaveComputer extends Computer {
/**
* Shows {@link Channel#resourceLoadingCount}.
* @return Requested value or {@code -1} if the agent is offline.
* @since 1.495
*/
@CheckReturnValue
public int getResourceLoadingCount() throws IOException, InterruptedException {
if (channel == null) {
return -1;
}
return channel.call(new LoadingCount(true));
}
/**
* Shows {@link Channel#classLoadingTime}.
* @return Requested value or {@code -1} if the agent is offline.
* @since 1.495
*/
@CheckReturnValue
public long getClassLoadingTime() throws IOException, InterruptedException {
if (channel == null) {
return -1;
}
return channel.call(new LoadingTime(false));
}
/**
* Shows {@link Channel#resourceLoadingTime}.
* @return Requested value or {@code -1} if the agent is offline.
* @since 1.495
*/
@CheckReturnValue
public long getResourceLoadingTime() throws IOException, InterruptedException {
if (channel == null) {
return -1;
}
return channel.call(new LoadingTime(true));
}
......@@ -741,7 +766,7 @@ public class SlaveComputer extends Computer {
@Override
public void doLaunchSlaveAgent(StaplerRequest req, StaplerResponse rsp) throws IOException {
checkPermission(CONNECT);
if(channel!=null) {
try {
req.getView(this, "already-launched.jelly").forward(req, rsp);
......@@ -890,27 +915,36 @@ public class SlaveComputer extends Computer {
/**
* Get the agent version
*/
@CheckReturnValue
public String getSlaveVersion() throws IOException, InterruptedException {
if (channel == null) {
return "Unknown (agent is offline)";
}
return channel.call(new SlaveVersion());
}
/**
* Get the OS description.
*/
@CheckReturnValue
public String getOSDescription() throws IOException, InterruptedException {
if (channel == null) {
return "Unknown (agent is offline)";
}
return channel.call(new DetectOS()) ? "Unix" : "Windows";
}
/**
* Expose real full env vars map from agent for UI presentation
*/
@CheckReturnValue
public Map<String,String> getEnvVarsFull() throws IOException, InterruptedException {
if(getChannel() == null) {
if (channel == null) {
Map<String, String> env = new TreeMap<> ();
env.put("N/A","N/A");
return env;
} else {
return getChannel().call(new ListFullEnvironment());
return channel.call(new ListFullEnvironment());
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册