in server/src/jetbrains/buildServer/queueManager/server/FreeSpaceQueuePauser.java [120:146]
private void check() {
if (isEnabled()) {
final QueueState qs = myQueueStateManager.readQueueState();
final Map<String, Long> dirsNoSpace = myDiskSpaceWatcher.getDirsNoSpace();
final Long threshold = getThreshold();
final Set<String> keys = new HashSet<>(dirsNoSpace.keySet()); // filter dirs that have enough space to run build
keys.stream().filter(key -> dirsNoSpace.get(key) > threshold).forEach(dirsNoSpace::remove);
if (qs.isQueueEnabled()) {
if (!dirsNoSpace.isEmpty()) { // disable queue
final String pauseReason = getPauseReason(dirsNoSpace, threshold);
final QueueState newState = new QueueState(false, null, pauseReason, new Date(), ACTOR);
myQueueStateManager.writeQueueState(newState);
myGlobalHealthItemsTracker.recalculate();
Loggers.SERVER.warn("Build queue was automatically paused. " + pauseReason);
}
} else {
// queue is disabled. try to resume
if (canResume(qs, dirsNoSpace)) {
final String resumeReason = "Queue was automatically unpaused as the disk space became available";
final QueueState newState = new QueueState(true, null, resumeReason, new Date(), ACTOR);
myQueueStateManager.writeQueueState(newState);
myGlobalHealthItemsTracker.recalculate();
Loggers.SERVER.warn(resumeReason);
}
}
}
}