From 4d9d800c0a1038d199736496c9d5bee4355156f3 Mon Sep 17 00:00:00 2001 From: ruhan Date: Wed, 27 Aug 2025 11:14:10 +0800 Subject: [PATCH] Provide useful message when validation fails on checksum retrieval --- .../service/promote/core/ContentDigester.java | 7 +++++++ .../promote/validate/PromotionValidationException.java | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/org/commonjava/service/promote/core/ContentDigester.java b/src/main/java/org/commonjava/service/promote/core/ContentDigester.java index aec072d..498520d 100644 --- a/src/main/java/org/commonjava/service/promote/core/ContentDigester.java +++ b/src/main/java/org/commonjava/service/promote/core/ContentDigester.java @@ -20,6 +20,7 @@ import org.commonjava.service.promote.model.StoreKey; import org.commonjava.service.promote.util.ContentDigest; import org.commonjava.service.promote.util.ResponseHelper; +import org.commonjava.service.promote.validate.PromotionValidationException; import org.eclipse.microprofile.rest.client.inject.RestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -88,6 +89,12 @@ public String digest(StoreKey key, String path, ContentDigest digest) throws Exc logger.debug("Retrieve failed, {}:{}, code: {}", key, path, resp.getStatus()); } } + catch ( Exception e ) + { + logger.debug("Retrieve and calculate checksum failed, {}:{}, Exception: {}", key, path, e.getMessage()); + throw new PromotionValidationException( + "Retrieve and calculate checksum failed for " + key + ":" + path, e); + } return null; } diff --git a/src/main/java/org/commonjava/service/promote/validate/PromotionValidationException.java b/src/main/java/org/commonjava/service/promote/validate/PromotionValidationException.java index be40ec7..2f9858b 100644 --- a/src/main/java/org/commonjava/service/promote/validate/PromotionValidationException.java +++ b/src/main/java/org/commonjava/service/promote/validate/PromotionValidationException.java @@ -34,4 +34,14 @@ public PromotionValidationException(String s, Exception e, String ruleName) { public PromotionValidationException(String s) { super(s); } + + @Override + public String toString() { + String baseMessage = super.toString(); + Throwable cause = getCause(); + if (cause != null && cause.getMessage() != null) { + return baseMessage + " [Cause: " + cause.getMessage() + "]"; + } + return baseMessage; + } }