diff --git a/core/src/main/java/hudson/model/Computer.java b/core/src/main/java/hudson/model/Computer.java index b975e9086be72dba03cf0f194d40b9d178f64ef8..d57535e7f3cbf61f63961465cf3339623731a5db 100644 --- a/core/src/main/java/hudson/model/Computer.java +++ b/core/src/main/java/hudson/model/Computer.java @@ -27,6 +27,7 @@ package hudson.model; import edu.umd.cs.findbugs.annotations.OverrideMustInvoke; import edu.umd.cs.findbugs.annotations.When; import hudson.EnvVars; +import hudson.Extension; import hudson.Launcher.ProcStarter; import hudson.Util; import hudson.cli.declarative.CLIMethod; @@ -66,6 +67,7 @@ import jenkins.model.queue.AsynchronousExecution; import jenkins.util.ContextResettingExecutorService; import jenkins.security.MasterToSlaveCallable; import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.DoNotUse; import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.args4j.Argument; import org.kohsuke.args4j.CmdLineException; @@ -403,7 +405,6 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces * make much sense because as soon as {@link Computer} is connected it can be disconnected by some other threads.) */ public final Future connect(boolean forceReconnect) { - this.cachedEnvironment = null; connectTime = System.currentTimeMillis(); return _connect(forceReconnect); } @@ -1594,6 +1595,15 @@ public /*transient*/ abstract class Computer extends Actionable implements Acces return true; } + @Extension + @Restricted(DoNotUse.class) + public static class InternalComputerListener extends ComputerListener { + @Override + public void onOnline(Computer c, TaskListener listener) throws IOException, InterruptedException { + c.cachedEnvironment = null; + } + } + @Override public int hashCode() { return executor.hashCode();