Skip to content

Commit b204402

Browse files
committed
fix: [CI-7942] error improve vm flow
1 parent c1e3693 commit b204402

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

332-ci-manager/service/src/main/java/io/harness/ci/execution/states/AbstractStepExecutable.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import static io.harness.beans.sweepingoutputs.CISweepingOutputNames.CODE_BASE_CONNECTOR_REF;
1212
import static io.harness.data.structure.EmptyPredicate.isEmpty;
1313
import static io.harness.data.structure.EmptyPredicate.isNotEmpty;
14+
import static io.harness.data.structure.HarnessStringUtils.emptyIfNull;
1415
import static io.harness.steps.StepUtils.buildAbstractions;
1516

1617
import static java.util.Collections.singletonList;
@@ -49,6 +50,7 @@
4950
import io.harness.ci.utils.HostedVmSecretResolver;
5051
import io.harness.data.structure.CollectionUtils;
5152
import io.harness.delegate.TaskSelector;
53+
import io.harness.delegate.beans.ErrorNotifyResponseData;
5254
import io.harness.delegate.beans.TaskData;
5355
import io.harness.delegate.beans.ci.CIExecuteStepTaskParams;
5456
import io.harness.delegate.beans.ci.vm.CIVmExecuteStepTaskParams;
@@ -61,6 +63,7 @@
6163
import io.harness.delegate.task.stepstatus.artifact.Artifact;
6264
import io.harness.delegate.task.stepstatus.artifact.ArtifactMetadata;
6365
import io.harness.encryption.Scope;
66+
import io.harness.exception.ExceptionUtils;
6467
import io.harness.exception.ngexception.CIStageExecutionException;
6568
import io.harness.execution.CIDelegateTaskExecutor;
6669
import io.harness.helper.SerializedResponseDataHelper;
@@ -269,9 +272,13 @@ public StepResponse handleVmStepResponse(Ambiance ambiance, String stepIdentifie
269272
VmTaskExecutionResponse taskResponse = filterVmStepResponse(responseDataMap);
270273
if (taskResponse == null) {
271274
log.error("stepStatusTaskResponseData should not be null for step {}", stepIdentifier);
275+
String errorMessage = filterVmStepErrorResponse(responseDataMap);
272276
return StepResponse.builder()
273277
.status(Status.FAILED)
274-
.failureInfo(FailureInfo.newBuilder().addAllFailureTypes(EnumSet.of(FailureType.APPLICATION_FAILURE)).build())
278+
.failureInfo(FailureInfo.newBuilder()
279+
.setErrorMessage(errorMessage)
280+
.addAllFailureTypes(EnumSet.of(FailureType.APPLICATION_FAILURE))
281+
.build())
275282
.build();
276283
}
277284

@@ -443,6 +450,18 @@ private VmTaskExecutionResponse filterVmStepResponse(Map<String, ResponseData> r
443450
.orElse(null);
444451
}
445452

453+
private String filterVmStepErrorResponse(Map<String, ResponseData> responseDataMap) {
454+
// Filter error response from step
455+
for (Map.Entry<String, ResponseData> entry : responseDataMap.entrySet()) {
456+
ResponseData responseData = entry.getValue();
457+
if (responseData instanceof ErrorNotifyResponseData) {
458+
return emptyIfNull(ExceptionUtils.getMessage(
459+
new CIStageExecutionException(((ErrorNotifyResponseData) responseData).getErrorMessage())));
460+
}
461+
}
462+
return "Error which executing step, please validate the configuration or reach out to [email protected]";
463+
}
464+
446465
private void logBackgroundStepForBackwardCompatibility(
447466
CIStepInfo stepInfo, String completeIdentifier, String identifier, String planExecutionId) {
448467
// Right now background step only takes stepGroup id upto 1 level. Logging this to check which all pipelines

0 commit comments

Comments
 (0)