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); + } + } }