From 4a767d3886d3fddfb64ce5e5eb8dbaedacf9af49 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Wed, 11 Feb 2026 13:04:08 +0000 Subject: [PATCH] Fix import of exports without queryable store data --- gradle/changelog/import.yaml | 2 ++ .../importexport/RepositoryQueryableStoreExporter.java | 3 ++- .../RepositoryQueryableStoreExporterTest.java | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 gradle/changelog/import.yaml diff --git a/gradle/changelog/import.yaml b/gradle/changelog/import.yaml new file mode 100644 index 0000000000..0b7473e72e --- /dev/null +++ b/gradle/changelog/import.yaml @@ -0,0 +1,2 @@ +- type: fixed + description: Import of repository exports without queryable store data diff --git a/scm-webapp/src/main/java/sonia/scm/importexport/RepositoryQueryableStoreExporter.java b/scm-webapp/src/main/java/sonia/scm/importexport/RepositoryQueryableStoreExporter.java index e1da7c27d9..bbf5cfe217 100644 --- a/scm-webapp/src/main/java/sonia/scm/importexport/RepositoryQueryableStoreExporter.java +++ b/scm-webapp/src/main/java/sonia/scm/importexport/RepositoryQueryableStoreExporter.java @@ -101,7 +101,8 @@ public class RepositoryQueryableStoreExporter { try { File dataDir = new File(workdir, "queryable-store-data"); if (!dataDir.exists() || !dataDir.isDirectory()) { - throw new RuntimeException("Directory 'queryable-store-data' not found in workdir: " + workdir.getAbsolutePath()); + log.trace("missing directory {} - skipping import of queryable data", dataDir.getAbsolutePath()); + return; } JAXBContext jaxbContext = JAXBContext.newInstance(StoreExport.class); diff --git a/scm-webapp/src/test/java/sonia/scm/importexport/RepositoryQueryableStoreExporterTest.java b/scm-webapp/src/test/java/sonia/scm/importexport/RepositoryQueryableStoreExporterTest.java index dac5600fa6..89745bead4 100644 --- a/scm-webapp/src/test/java/sonia/scm/importexport/RepositoryQueryableStoreExporterTest.java +++ b/scm-webapp/src/test/java/sonia/scm/importexport/RepositoryQueryableStoreExporterTest.java @@ -175,5 +175,14 @@ class RepositoryQueryableStoreExporterTest { } } } + + @Test + void shouldSkipImportIfDirectoryIsMissing(SimpleTypeStoreFactory simpleTypeStoreFactory, @TempDir File tempDir) throws IOException { + exporter.importStores("42", tempDir); + + try (QueryableMutableStore store = simpleTypeStoreFactory.getMutable("42")) { + assertThat(store.getAll()).hasSize(0); + } + } }