未验证 提交 5db5ef51 编写于 作者: O Oleg Nenashev 提交者: GitHub

Merge pull request #4271 from ilpianista/JENKINS-42658

[JENKINS-42658] - Fix NPE in Agent API when the agent is offline (e.g. retrieving agent version or OS description)
......@@ -75,6 +75,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;
......@@ -453,18 +454,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;
}
......@@ -473,25 +483,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));
}
......@@ -871,27 +896,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.
先完成此消息的编辑!
想要评论请 注册