diff --git a/scm-webapp/src/main/java/sonia/scm/update/repository/BaseMigrationStrategy.java b/scm-webapp/src/main/java/sonia/scm/update/repository/BaseMigrationStrategy.java index 27d8732b17..ef2624eadd 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/repository/BaseMigrationStrategy.java +++ b/scm-webapp/src/main/java/sonia/scm/update/repository/BaseMigrationStrategy.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.update.repository; import sonia.scm.SCMContextProvider; @@ -31,6 +31,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import java.util.function.Consumer; import java.util.stream.Stream; abstract class BaseMigrationStrategy implements MigrationStrategy.Instance { @@ -50,9 +51,9 @@ Path getTypeDependentPath(String type) { return contextProvider.getBaseDirectory().toPath().resolve("repositories").resolve(type); } - Stream listSourceDirectory(Path sourceDirectory) { - try { - return Files.list(sourceDirectory); + void listSourceDirectory(Path sourceDirectory, Consumer> pathConsumer) { + try (Stream paths = Files.list(sourceDirectory)) { + pathConsumer.accept(paths); } catch (IOException e) { throw new UpdateException("could not read original directory", e); } diff --git a/scm-webapp/src/main/java/sonia/scm/update/repository/CopyMigrationStrategy.java b/scm-webapp/src/main/java/sonia/scm/update/repository/CopyMigrationStrategy.java index 0032238729..9702677513 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/repository/CopyMigrationStrategy.java +++ b/scm-webapp/src/main/java/sonia/scm/update/repository/CopyMigrationStrategy.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.update.repository; import org.slf4j.Logger; @@ -62,15 +62,17 @@ public Optional migrate(String id, String name, String type) { private void copyData(Path sourceDirectory, Path targetDirectory) { createDataDirectory(targetDirectory); - listSourceDirectory(sourceDirectory).forEach( + listSourceDirectory(sourceDirectory, paths -> paths.forEach( sourceFile -> { Path targetFile = targetDirectory.resolve(sourceFile.getFileName()); if (Files.isDirectory(sourceFile)) { + LOG.trace("traversing down into sub directory {}", sourceFile); copyData(sourceFile, targetFile); } else { + LOG.trace("copying file {} to {}", sourceFile, targetFile); copyFile(sourceFile, targetFile); } } - ); + )); } } diff --git a/scm-webapp/src/main/java/sonia/scm/update/repository/InlineMigrationStrategy.java b/scm-webapp/src/main/java/sonia/scm/update/repository/InlineMigrationStrategy.java index 4d8a2a987f..6c5d7afeed 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/repository/InlineMigrationStrategy.java +++ b/scm-webapp/src/main/java/sonia/scm/update/repository/InlineMigrationStrategy.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.update.repository; import org.slf4j.Logger; @@ -67,20 +67,23 @@ private void moveData(Path sourceDirectory, Path targetDirectory) { private void moveData(Path sourceDirectory, Path targetDirectory, boolean deleteDirectory) { createDataDirectory(targetDirectory); - listSourceDirectory(sourceDirectory) + listSourceDirectory(sourceDirectory, paths -> paths .filter(sourceFile -> !targetDirectory.equals(sourceFile)) .forEach( sourceFile -> { Path targetFile = targetDirectory.resolve(sourceFile.getFileName()); if (Files.isDirectory(sourceFile)) { + LOG.trace("traversing down into sub directory {}", sourceFile); moveData(sourceFile, targetFile, true); } else { + LOG.trace("moving file {} to {}", sourceFile, targetFile); moveFile(sourceFile, targetFile); } } - ); + )); if (deleteDirectory) { try { + LOG.trace("deleting source directory {}", sourceDirectory); Files.delete(sourceDirectory); } catch (IOException e) { LOG.warn("could not delete source repository directory {}", sourceDirectory); diff --git a/scm-webapp/src/main/java/sonia/scm/update/repository/MoveMigrationStrategy.java b/scm-webapp/src/main/java/sonia/scm/update/repository/MoveMigrationStrategy.java index 08b859481d..c5115a0637 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/repository/MoveMigrationStrategy.java +++ b/scm-webapp/src/main/java/sonia/scm/update/repository/MoveMigrationStrategy.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - + package sonia.scm.update.repository; import org.slf4j.Logger; @@ -83,17 +83,20 @@ private void delete(Path rootPath, List directories) { private void moveData(Path sourceDirectory, Path targetDirectory) { createDataDirectory(targetDirectory); - listSourceDirectory(sourceDirectory).forEach( + listSourceDirectory(sourceDirectory, paths -> paths.forEach( sourceFile -> { Path targetFile = targetDirectory.resolve(sourceFile.getFileName()); if (Files.isDirectory(sourceFile)) { + LOG.trace("traversing down into sub directory {}", sourceFile); moveData(sourceFile, targetFile); } else { + LOG.trace("moving file {} to {}", sourceFile, targetFile); moveFile(sourceFile, targetFile); } } - ); + )); try { + LOG.trace("deleting source directory {}", sourceDirectory); Files.delete(sourceDirectory); } catch (IOException e) { LOG.warn("could not delete source repository directory {}", sourceDirectory);