From 9c5e9adbb491d1714af23aa2ac259b443d9c6282 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Mon, 22 Sep 2025 11:26:46 +0200 Subject: [PATCH] Fix simple repository export --- gradle/changelog/export.yaml | 2 ++ .../scm/repository/DefaultRepositoryExportingCheck.java | 2 +- .../scm/api/v2/resources/RepositoryExportResource.java | 8 +++++++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 gradle/changelog/export.yaml diff --git a/gradle/changelog/export.yaml b/gradle/changelog/export.yaml new file mode 100644 index 0000000000..5d818dfe59 --- /dev/null +++ b/gradle/changelog/export.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Export of repositories diff --git a/scm-core/src/main/java/sonia/scm/repository/DefaultRepositoryExportingCheck.java b/scm-core/src/main/java/sonia/scm/repository/DefaultRepositoryExportingCheck.java index 933037ed65..d9924ae355 100644 --- a/scm-core/src/main/java/sonia/scm/repository/DefaultRepositoryExportingCheck.java +++ b/scm-core/src/main/java/sonia/scm/repository/DefaultRepositoryExportingCheck.java @@ -52,7 +52,7 @@ public final class DefaultRepositoryExportingCheck implements RepositoryExportin } finally { int lockCount = getLockCount(repository.getId()).decrementAndGet(); if (lockCount <= 0) { - LOG.warn("Got negative export lock count {} for repository {}", lockCount, repository); + LOG.debug("Lock count {} for repository {}", lockCount, repository); EXPORTING_REPOSITORIES.remove(repository.getId()); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportResource.java index 584fa1dcfe..ddfa69eb43 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryExportResource.java @@ -43,6 +43,7 @@ import jakarta.ws.rs.core.UriInfo; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream; import sonia.scm.BadRequestException; import sonia.scm.ConcurrentModificationException; @@ -78,6 +79,7 @@ import static sonia.scm.ContextEntry.ContextBuilder.entity; import static sonia.scm.importexport.RepositoryTypeSupportChecker.checkSupport; import static sonia.scm.importexport.RepositoryTypeSupportChecker.type; +@Slf4j public class RepositoryExportResource { private static final String NO_PASSWORD = ""; @@ -484,7 +486,11 @@ public class RepositoryExportResource { if (compressed) { GzipCompressorOutputStream gzipCompressorOutputStream = new GzipCompressorOutputStream(os); bundleCommand.bundle(gzipCompressorOutputStream); - gzipCompressorOutputStream.finish(); + try { + gzipCompressorOutputStream.finish(); + } catch (NullPointerException e) { + log.info("Could not finish gzip stream", e); + } } else { bundleCommand.bundle(os); }