diff --git a/src/main/java/com/kamco/cd/training/train/service/TmpDatasetService.java b/src/main/java/com/kamco/cd/training/train/service/TmpDatasetService.java index 5714104..fe555ae 100644 --- a/src/main/java/com/kamco/cd/training/train/service/TmpDatasetService.java +++ b/src/main/java/com/kamco/cd/training/train/service/TmpDatasetService.java @@ -92,8 +92,20 @@ public class TmpDatasetService { Files.delete(dst); } - Files.createSymbolicLink(dst, src); - log.info("symlink created: {} -> {}", dst, src); + try { + Files.createLink(dst, src); + log.info("hardlink created: {} -> {}", dst, src); + } catch (FileSystemException e) { + if (e.getMessage() != null && e.getMessage().contains("Invalid cross-device link")) { + log.warn( + "Hardlink failed due to cross-device link. Fallback to symlink. src={}, dst={}", + src, + dst); + Files.createSymbolicLink(dst, src); + } else { + throw e; + } + } return 1; }