Loading src/main/java/it/inaf/oats/vospace/JobService.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ import it.inaf.oats.vospace.exception.InvalidArgumentException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.stereotype.Service; import it.inaf.oats.vospace.exception.VoSpaceErrorSummarizableException; import it.inaf.oats.vospace.exception.VoSpaceErrorSummarizableException; import it.inaf.oats.vospace.persistence.NodeDAO; import java.util.List; import java.util.List; import java.util.Optional; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture; Loading Loading @@ -53,6 +54,9 @@ public class JobService { @Autowired @Autowired private FileServiceClient fileServiceClient; private FileServiceClient fileServiceClient; @Autowired private NodeDAO nodeDao; public enum JobDirection { public enum JobDirection { pullToVoSpace, pullToVoSpace, pullFromVoSpace, pullFromVoSpace, Loading Loading @@ -193,10 +197,19 @@ public class JobService { User user = (User) servletRequest.getUserPrincipal(); User user = (User) servletRequest.getUserPrincipal(); CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> { handleJobErrors(jobSummary, job -> { handleJobErrors(jobSummary, job -> { String jobId = jobSummary.getJobId(); String jobId = jobSummary.getJobId(); // Index 0: source 1: destination List<String> sourceAndDestination = copyService.processCopyNodes(transfer, jobId, user); List<String> sourceAndDestination = copyService.processCopyNodes(transfer, jobId, user); // Call file service and command copy // Call file service and command copy try{ fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user); fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user); } catch (Exception e) { // We decided not to purge metadata in case of failure // just release busy nodes setting job_id = null nodeDao.releaseBusyNodesByJobId(jobId); throw e; } return null; return null; }); }); Loading Loading
src/main/java/it/inaf/oats/vospace/JobService.java +13 −0 Original line number Original line Diff line number Diff line Loading @@ -18,6 +18,7 @@ import it.inaf.oats.vospace.exception.InvalidArgumentException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.stereotype.Service; import it.inaf.oats.vospace.exception.VoSpaceErrorSummarizableException; import it.inaf.oats.vospace.exception.VoSpaceErrorSummarizableException; import it.inaf.oats.vospace.persistence.NodeDAO; import java.util.List; import java.util.List; import java.util.Optional; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture; Loading Loading @@ -53,6 +54,9 @@ public class JobService { @Autowired @Autowired private FileServiceClient fileServiceClient; private FileServiceClient fileServiceClient; @Autowired private NodeDAO nodeDao; public enum JobDirection { public enum JobDirection { pullToVoSpace, pullToVoSpace, pullFromVoSpace, pullFromVoSpace, Loading Loading @@ -193,10 +197,19 @@ public class JobService { User user = (User) servletRequest.getUserPrincipal(); User user = (User) servletRequest.getUserPrincipal(); CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> { handleJobErrors(jobSummary, job -> { handleJobErrors(jobSummary, job -> { String jobId = jobSummary.getJobId(); String jobId = jobSummary.getJobId(); // Index 0: source 1: destination List<String> sourceAndDestination = copyService.processCopyNodes(transfer, jobId, user); List<String> sourceAndDestination = copyService.processCopyNodes(transfer, jobId, user); // Call file service and command copy // Call file service and command copy try{ fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user); fileServiceClient.startFileCopyJob(sourceAndDestination.get(0), sourceAndDestination.get(1), jobId, user); } catch (Exception e) { // We decided not to purge metadata in case of failure // just release busy nodes setting job_id = null nodeDao.releaseBusyNodesByJobId(jobId); throw e; } return null; return null; }); }); Loading