in git-agent/src/main/java/jetbrains/buildServer/buildTriggers/vcs/git/agent/AgentMirrorCleaner.java [44:102]
public void registerDirectoryCleaners(@NotNull DirectoryCleanersProviderContext context,
@NotNull DirectoryCleanersRegistry registry) {
//feature toggle, may be removed after testing new code
if (Boolean.parseBoolean(
context.getRunningBuild().getSharedConfigParameters().getOrDefault("teamcity.internal.git.mirrorsCleaner.useOldImplementation", "false"))) {
oldImplementation(context, registry);
return;
}
final Set<String> repositoriesUsedInBuild = getRunningBuildRepositories(context);
final Set<File> mirrors = new HashSet<>(myMirrorManager.getMappings().values());
for (File mirror : listFiles(myMirrorManager.getBaseMirrorsDir())) {
if (!mirror.isDirectory()) {
LOG.debug("Skipping non-mirror file: " + mirror.getAbsolutePath());
continue;
}
final String name = mirror.getName();
if (!myMirrorManager.isInvalidDirName(name)) {
final String repository = myMirrorManager.getUrl(mirror.getName());
if (repository != null && repositoriesUsedInBuild.contains(repository)) {
return;
}
}
registry.addCleaner(mirror, new Date(myMirrorManager.getLastUsedTime(mirror)), () -> {
if (myMirrorManager.isInvalidDirName(name)) {
myMirrorManager.removeMirrorDir(mirror);
FileUtil.delete(mirror); // make sure mirror is deleted
LOG.info("Found invalid mirror directory: " + mirror.getAbsolutePath() + ", removed it straight away");
return;
}
final String repository = myMirrorManager.getUrl(mirror.getName());
if (repository == null) {
myMirrorManager.removeMirrorDir(mirror);
FileUtil.delete(mirror); // make sure mirror is deleted
LOG.info("Found unused mirror directory: " + mirror.getAbsolutePath() + ", removed it straight away");
return;
}
if (!repositoriesUsedInBuild.contains(repository)) {
if (isCleanupEnabled(mirror)) {
LOG.debug("Register cleaner for mirror " + mirror.getAbsolutePath());
registry.addCleaner(mirror, new Date(myMirrorManager.getLastUsedTime(mirror)));
} else {
LOG.debug("Clean-up is disabled in " + repository + " (" + mirror.getName() + ")");
}
}
});
mirrors.remove(mirror);
}
for (File mirror : mirrors) {
myMirrorManager.removeMirrorDir(mirror);
LOG.debug("Found non existing mirror directory: " + mirror.getAbsolutePath() + ", removed it from the list of mirrors");
}
}