Skip to content

Commit 6afd396

Browse files
authored
Merge pull request #68 from Roche-CSI/MavenRepoHang
Improve logging of maven dependency:copy command to avoid hang during re-run for error message
2 parents a106120 + 190276f commit 6afd396

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

re-maven/src/main/java/com/g2forge/reassert/maven/MavenRepository.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import com.fasterxml.jackson.module.paranamer.ParanamerModule;
1919
import com.g2forge.alexandria.adt.graph.v1.HGraph;
2020
import com.g2forge.alexandria.java.core.enums.EnumException;
21-
import com.g2forge.alexandria.java.core.error.UnreachableCodeError;
2221
import com.g2forge.alexandria.java.core.helpers.HCollection;
2322
import com.g2forge.alexandria.java.function.IFunction1;
2423
import com.g2forge.alexandria.java.function.ISupplier;
@@ -27,6 +26,7 @@
2726
import com.g2forge.alexandria.service.BasicServiceLoader;
2827
import com.g2forge.alexandria.service.DefaultInstantiator;
2928
import com.g2forge.gearbox.command.process.IProcess;
29+
import com.g2forge.gearbox.command.proxy.result.StreamResultSupplier;
3030
import com.g2forge.gearbox.maven.HMaven;
3131
import com.g2forge.gearbox.maven.IMaven;
3232
import com.g2forge.gearbox.maven.MavenDownloadErrors;
@@ -147,14 +147,16 @@ protected Path download(MavenCoordinates coordinates, Path path) {
147147
Files.newOutputStream(path, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE).close();
148148
} else {
149149
if (!process.isSuccess()) {
150-
// Re-run the command so that we log the complete output
151-
command.get().assertSuccess();
150+
boolean rerunFailed;
152151
try {
153-
// Fail (again) just in case the re-run succeeded somehow, which would be REALLY weird
154-
process.assertSuccess();
152+
// Re-run the command so that we log the complete output
153+
log.error("Maven dependency copy failed, running again to log output:");
154+
StreamResultSupplier.STANDARD.apply(command.get()).forEach(log::error);
155+
rerunFailed = false;
155156
} catch (Throwable throwable) {
156-
throw new UnreachableCodeError(throwable);
157+
rerunFailed = true;
157158
}
159+
if (!rerunFailed) throw new Error("This error indicates that the maven dependency copy failed once, and succeeded on re-run. Perhaps a transient network failure? Try re-running this.");
158160
}
159161
Files.move(path.getParent().resolve(coordinates.getArtifactId() + "-" + coordinates.getVersion() + ".pom"), path);
160162
}

0 commit comments

Comments
 (0)