提交 8caa1a04 编写于 作者: C Christoph Kutzinski

Minimal refactoring for a8c3a031

IMO this needs further refactoring - respect separation of concerns:
it's not AbstractProject's call to trigger a node offline
上级 f719bd06
......@@ -1376,7 +1376,7 @@ public abstract class AbstractProject<P extends AbstractProject<P,R>,R extends A
workspace.mkdirs();
} catch (IOException e) {
// Can't create workspace dir - Is slave disk full ?
new DiskSpaceMonitor().data(build.getBuiltOn().toComputer());
new DiskSpaceMonitor().markNodeOfflineIfDiskspaceIsTooLow(build.getBuiltOn().toComputer());
throw e;
}
......
......@@ -2,6 +2,9 @@ package hudson.node_monitors;
import hudson.model.Computer;
import hudson.node_monitors.DiskSpaceMonitorDescriptor.DiskSpace;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;
import org.kohsuke.stapler.DataBoundConstructor;
import java.text.ParseException;
......@@ -40,18 +43,32 @@ public abstract class AbstractDiskSpaceMonitor extends NodeMonitor {
@Override
public Object data(Computer c) {
DiskSpace size = (DiskSpace) super.data(c);
DiskSpace size = markNodeOfflineIfDiskspaceIsTooLow(c);
// mark online (again), if free space is over threshold
if(size!=null && size.size > getThresholdBytes() && c.isOffline() && c.getOfflineCause() instanceof DiskSpace)
if(this.getClass().equals(((DiskSpace)c.getOfflineCause()).getTrigger()))
if(getDescriptor().markOnline(c)) {
LOGGER.warning(Messages.DiskSpaceMonitor_MarkedOnline(c.getName()));
}
return size;
}
/**
* Marks the given node as offline if free disk space is below the configured threshold.
* @param c the node
* @return the free space
* @since 1.521
*/
@Restricted(NoExternalUse.class)
public DiskSpace markNodeOfflineIfDiskspaceIsTooLow(Computer c) {
DiskSpace size = (DiskSpace) super.data(c);
if(size!=null && size.size < getThresholdBytes()) {
size.setTriggered(this.getClass(), true);
if(getDescriptor().markOffline(c,size)) {
LOGGER.warning(Messages.DiskSpaceMonitor_MarkedOffline(c.getName()));
}
}
if(size!=null && size.size > getThresholdBytes() && c.isOffline() && c.getOfflineCause() instanceof DiskSpace)
if(this.getClass().equals(((DiskSpace)c.getOfflineCause()).getTrigger()))
if(getDescriptor().markOnline(c)) {
LOGGER.warning(Messages.DiskSpaceMonitor_MarkedOnline(c.getName()));
}
return size;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册