in s3-artifact-storage-server/src/main/java/jetbrains/buildServer/artifacts/s3/cleanup/S3CleanupExtension.java [93:126]
public void prepareBuildsData(@NotNull BuildCleanupContext cleanupContext) {
Map<Long, BuildStorageInfo> buildStorageInfos = new ConcurrentHashMap<>();
for (SFinishedBuild build : cleanupContext.getBuilds()) {
try {
ArtifactListData artifactsInfo = myHelper.getArtifactList(build);
if (artifactsInfo == null) {
continue;
}
String pathPrefix = S3Util.getPathPrefix(artifactsInfo);
if (pathPrefix == null) {
continue;
}
List<String> pathsToDelete = ArtifactPathsEvaluator.getPathsToDelete((BuildCleanupContextEx)cleanupContext, build, artifactsInfo);
if (pathsToDelete.isEmpty()) {
continue;
}
Map<String, String> storageSettings = mySettingsProvider.getStorageSettings(build);
Map<String, String> invalids = S3Util.validateParameters(storageSettings, false);
if (!invalids.isEmpty()) {
CLEANUP.warn("Failed to remove S3 artifacts in build " + LogUtil.describe(build) + ":\n" + StringUtil.join("\n", invalids.values()));
cleanupContext.onBuildCleanupError(this, build, "Failed to remove S3 artifacts due to incorrect storage settings configuration.");
continue;
}
buildStorageInfos.put(build.getBuildId(), new BuildStorageInfo(build, pathPrefix, pathsToDelete, storageSettings));
} catch (IOException e) {
CLEANUP.warn("Failed to get S3 artifacts list in build " + LogUtil.describe(build) + ": " + e.getMessage());
cleanupContext.onBuildCleanupError(this, build, "Failed to get S3 artifacts list due to IO error.");
} catch (RuntimeException e) {
CLEANUP.warn("Failed to remove S3 artifacts " + LogUtil.describe(build) + ": " + e.getMessage());
cleanupContext.onBuildCleanupError(this, build, "Failed to remove S3 artifacts due to unexpected error.");
}
}
cleanupContext.setExtensionData(BUILD_STORAGE_INFOS_KEY, buildStorageInfos);
}