in agent/src/jetbrains/buildServer/swabra/snapshots/FilesCollector.java [57:104]
public void collect(@NotNull File snapshot,
@NotNull File dir,
@Nullable CollectionResultHandler handler) {
if (!snapshot.exists() || (snapshot.length() == 0)) {
logUnableCollect(snapshot, dir, "file doesn't exist", null);
if (handler != null) handler.error();
return;
}
final List<String> rules = mySettings.getRules().getRulesForPath(dir);
myLogger.message("Scanning directory " + dir + " for newly created, modified and deleted files comparing with snapshot " +
snapshot.getName() + (rules.size() == 1 ? "" : ", paths to monitor are " + SwabraUtil.getRulesStr(rules, true)), true);
try {
iterateAndCollect(snapshot, dir);
} catch (InterruptedException e) {
myLogger.warn("Interrupted while scanning " + dir + ". Gracefully finishing...");
if (handler != null) handler.interrupted();
return;
} catch (Exception e) {
logUnableCollect(snapshot, dir, "Exception occurred: " + e.getMessage(), e);
if (handler != null) handler.error();
return;
}
final FilesCollectionProcessor.Results results = myProcessor.getResults();
final int detectedNew = results.detectedNewAndDeleted + results.detectedNewAndUnableToDelete;
final String message = "Detected " + (results.detectedUnchanged >= 1 ? results.detectedUnchanged - 1 : 0) + " unchanged, " + // -1 not to count dir
detectedNew + " newly created" +
(detectedNew > 0 ? " (" + results.detectedNewAndDeleted + " of them deleted), " : ", ") +
results.detectedModified + " modified, " +
results.detectedDeleted + " deleted files and directories";
removeSnapshot(snapshot, dir);
if (results.detectedNewAndUnableToDelete != 0) {
myLogger.warn(message);
if (handler != null) handler.lockedFilesDetected();
return;
}
if (results.detectedDeleted > 0 || results.detectedModified > 0) {
myLogger.warn(message);
if (handler != null) handler.dirtyStateDetected();
return;
}
myLogger.message(message, true);
if (handler != null) handler.success();
}