in s3-artifact-storage-server/src/main/java/jetbrains/buildServer/artifacts/s3/web/S3OrphanedArtifactsController.java [71:109]
protected ModelAndView doHandle(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws Exception {
if (!SdkHttpMethod.GET.name().equals(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
return null;
}
if (!TeamCityProperties.getBoolean(SCANNER_ENABLED_FLAG)) {
final ModelAndView error = SimpleView.createTextView("Artifact scanner is not enabled");
error.setStatus(HttpStatus.FORBIDDEN);
return error;
}
final String projectId = request.getParameter("projectId");
final boolean scanBuilds = Boolean.parseBoolean(request.getParameter("scanBuilds"));
final boolean calculateSizes = Boolean.parseBoolean(request.getParameter("calculateSizes"));
final boolean skipErrors = Boolean.parseBoolean(request.getParameter("skipErrors"));
final SUser user = SessionUser.getUser(request);
final int pauseInterval = TeamCityProperties.getInteger(SCANNER_PAUSE_INTERVAL_SECONDS, SCANNER_DEFAULT_PAUSE_INTERVAL_SECONDS);
if (myScanner.getLastScanTimestamp().isBefore(Instant.now().minus(pauseInterval, ChronoUnit.SECONDS))) {
final boolean scanStarted = myScanner.tryScanArtifacts(projectId, user, scanBuilds, calculateSizes, skipErrors);
if (scanStarted) {
response.getWriter().println("Starting the scan");
response.setStatus(HttpServletResponse.SC_ACCEPTED);
} else if (myScanner.isScanning()) {
final int currentScannedPaths = myScanner.getScannedPathsCount();
response.getWriter().println("Scan in progress. Scanned: " + currentScannedPaths + " paths");
response.setStatus(HttpServletResponse.SC_ACCEPTED);
} else if (myScanner.getLastScanError() != null) {
final ModelAndView error = SimpleView.createTextView("Scan ended with an error: " + myScanner.getLastScanError());
error.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
return error;
}
} else {
response.getWriter().println("Last scan finished at " + DateTimeFormatter.ISO_INSTANT.format(myScanner.getLastScanTimestamp()));
response.getWriter().println("Please wait for " + pauseInterval + " seconds before starting another scan");
response.setStatus(HttpServletResponse.SC_ACCEPTED);
}
return null;
}