-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
1.3.0
-
False
-
-
False
-
-
Description of the problem:
When running the MTA workflow with bad input, the workflow fails with error as expected. However, the error message in the results screen is both unclear and truncated:
net.thisptr.jackson.jq.exception.JsonQueryTypeException - string ("The 1st ta...) and number (5) cannot be added
The source of the error is a invalid URL (foo.bar.com) but this is not clear to the user.
How reproducible: 100%
Steps to reproduce:
1. {}Deploy orchestrator v1.3.0-rc6 and MTA 7 mta-v7-1.3.0-rc4.
2. Execute MTA with invalid repo URL.
Actual results: See above. The outputted error in the results does not indicate the actual source of the failure. From looking at the MTA workflow pod logs:
2024-11-26 10:39:47,287 ERROR [org.jbp.wor.ins.imp.WorkflowProcessInstanceImpl] (executor-thread-4958) Unexpected error while executing node TaskFailedErrorExitMessage in process instance 4dc2807c-ac17-4984-a957-b1bb316ec921: org.jbpm.workflow.instance.WorkflowRuntimeException: [mta-analysis-v7:4dc2807c-ac17-4984-a957-b1bb316ec921 - TaskFailedErrorExitMessage:[uuid=40]] -- Unable to evaluate content {"recipients":["user:default/guest"],"repositoryURL":"https://foo.bar.com","exportToIssueManager":"false","application":{"assessed":false,"assessments":[],"binary":"","bucket":{"id":5},"comments":"","confidence":0,"contributors":[],"createTime":"2024-11-26T10:39:17.2236568Z","createUser":"admin.noauth","description":"","effort":0,"id":5,"identities":[],"name":"4dc2807c-ac17-4984-a957-b1bb316ec921_https://foo.bar.com","repository":{"branch":"","kind":"git","path":"","tag":"","url":"https://foo.bar.com"},"risk":"unassessed","updateUser":""},"taskgroup":{"addon":"analyzer","bucket":{"id":6},"createTime":"2024-11-26T10:39:17.2416676Z","createUser":"admin.noauth","data":{"mode":{"binary":false,"withDeps":false},"rules":{"labels":{"included":["konveyor.io/target=cloud-readiness"]}},"scope":{"withKnownLibs":false},"tagger":{"enabled":true}},"id":5,"name":"taskgroup.analyzer","state":"Ready","updateUser":"admin.noauth","tasks":[{"addon":"analyzer","application":{"id":5},"bucket":{"id":5},"createTime":"2024-11-26T10:39:17.252292243Z","createUser":"","data":{"mode":{"binary":false,"withDeps":false},"rules":{"labels":{"included":["konveyor.io/target=cloud-readiness"]}},"scope":{"withKnownLibs":false},"tagger":{"enabled":true}},"errors":[{"description":"Pod failed: Error","severity":"Error"}],"id":5,"image":"registry.redhat.io/mta/mta-analyzer-addon-rhel9@sha256:1b5e016046d93b6a2674d63f08e0a46f8050e785bd58fd94ba7a70487efe7e2a","name":"4dc2807c-ac17-4984-a957-b1bb316ec921_https://foo.bar.com.1.analyzer","pod":"openshift-mta/task-5-j9w66","started":"2024-11-26T10:39:17.888413519Z","state":"Failed","terminated":"2024-11-26T10:39:21.944997573Z","updateUser":""}]}} using expr { exitMessage: "The 1st task of the taskGroup " + .taskgroup.id + " is in failed state" } at org.jbpm.workflow.instance.impl.NodeInstanceImpl.executeAction(NodeInstanceImpl.java:283) at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:61) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:76) at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:55) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.node.CompositeNodeInstance.internalTrigger(CompositeNodeInstance.java:146) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:476) at org.jbpm.workflow.instance.node.SplitInstance.executeStrategy(SplitInstance.java:128) at org.jbpm.workflow.instance.node.SplitInstance.internalTrigger(SplitInstance.java:69) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:54) at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:370) at org.jbpm.workflow.instance.node.CompositeNodeInstance.triggerCompleted(CompositeNodeInstance.java:172) at org.jbpm.workflow.instance.node.CompositeNodeInstance.nodeInstanceCompleted(CompositeNodeInstance.java:439) at org.jbpm.workflow.instance.node.EndNodeInstance.internalTrigger(EndNodeInstance.java:72) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:75) at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:71) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:75) at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:71) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.node.ActionNodeInstance.triggerCompleted(ActionNodeInstance.java:75) at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:71) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:54) at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:370) at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:330) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.triggerCompleted(WorkItemNodeInstance.java:286) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.workItemCompleted(WorkItemNodeInstance.java:371) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.signalEvent(WorkItemNodeInstance.java:339) at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:672) at org.jbpm.process.instance.LightWorkItemManager.internalCompleteWorkItem(LightWorkItemManager.java:184) at org.jbpm.process.instance.LightWorkItemManager.transitionWorkItem(LightWorkItemManager.java:215) at org.jbpm.process.instance.LightWorkItemManager.transitionWorkItem(LightWorkItemManager.java:194) at org.jbpm.process.instance.LightWorkItemManager.completeWorkItem(LightWorkItemManager.java:155) at org.kie.kogito.serverless.workflow.WorkflowWorkItemHandler.executeWorkItem(WorkflowWorkItemHandler.java:41) at org.kie.kogito.app.Mta_getTaskgroup_ClientProxy.executeWorkItem(Unknown Source) at org.jbpm.process.instance.LightWorkItemManager.internalExecuteWorkItem(LightWorkItemManager.java:80) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.lambda$internalTrigger$0(WorkItemNodeInstance.java:170) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.processWorkItemHandler(WorkItemNodeInstance.java:183) at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:169) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:249) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:461) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:446) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:416) at org.jbpm.workflow.instance.impl.ExtendedNodeInstanceImpl.triggerCompleted(ExtendedNodeInstanceImpl.java:54) at org.jbpm.workflow.instance.node.StateBasedNodeInstance.triggerCompleted(StateBasedNodeInstance.java:370) at org.jbpm.workflow.instance.node.TimerNodeInstance.triggerCompleted(TimerNodeInstance.java:127) at org.jbpm.workflow.instance.node.TimerNodeInstance.signalEvent(TimerNodeInstance.java:108) at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.signalEvent(WorkflowProcessInstanceImpl.java:672) at org.kie.kogito.process.impl.AbstractProcessInstance.send(AbstractProcessInstance.java:323) at org.kie.kogito.services.jobs.impl.TriggerJobCommand.lambda$execute$0(TriggerJobCommand.java:62) at java.base/java.util.Optional.map(Optional.java:260) at org.kie.kogito.services.jobs.impl.TriggerJobCommand.lambda$execute$1(TriggerJobCommand.java:61) at org.kie.kogito.services.uow.UnitOfWorkExecutor.executeInUnitOfWork(UnitOfWorkExecutor.java:40) at org.kie.kogito.services.jobs.impl.TriggerJobCommand.execute(TriggerJobCommand.java:59) at org.kie.kogito.jobs.quarkus.common.CallbackJobsServiceResource.triggerTimer(CallbackJobsServiceResource.java:91) at jdk.internal.reflect.GeneratedMethodAccessor177.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:154) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:118) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:560) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:452) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:413) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:415) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:378) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:356) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:70) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:429) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:240) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:154) at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321) at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:157) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:229) at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:82) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:147) at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:93) at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:582) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538) at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29) at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: java.lang.IllegalArgumentException: Unable to evaluate content {"recipients":["user:default/guest"],"repositoryURL":"https://foo.bar.com","exportToIssueManager":"false","application":{"assessed":false,"assessments":[],"binary":"","bucket":{"id":5},"comments":"","confidence":0,"contributors":[],"createTime":"2024-11-26T10:39:17.2236568Z","createUser":"admin.noauth","description":"","effort":0,"id":5,"identities":[],"name":"4dc2807c-ac17-4984-a957-b1bb316ec921_https://foo.bar.com","repository":{"branch":"","kind":"git","path":"","tag":"","url":"https://foo.bar.com"},"risk":"unassessed","updateUser":""},"taskgroup":{"addon":"analyzer","bucket":{"id":6},"createTime":"2024-11-26T10:39:17.2416676Z","createUser":"admin.noauth","data":{"mode":{"binary":false,"withDeps":false},"rules":{"labels":{"included":["konveyor.io/target=cloud-readiness"]}},"scope":{"withKnownLibs":false},"tagger":{"enabled":true}},"id":5,"name":"taskgroup.analyzer","state":"Ready","updateUser":"admin.noauth","tasks":[{"addon":"analyzer","application":{"id":5},"bucket":{"id":5},"createTime":"2024-11-26T10:39:17.252292243Z","createUser":"","data":{"mode":{"binary":false,"withDeps":false},"rules":{"labels":{"included":["konveyor.io/target=cloud-readiness"]}},"scope":{"withKnownLibs":false},"tagger":{"enabled":true}},"errors":[{"description":"Pod failed: Error","severity":"Error"}],"id":5,"image":"registry.redhat.io/mta/mta-analyzer-addon-rhel9@sha256:1b5e016046d93b6a2674d63f08e0a46f8050e785bd58fd94ba7a70487efe7e2a","name":"4dc2807c-ac17-4984-a957-b1bb316ec921_https://foo.bar.com.1.analyzer","pod":"openshift-mta/task-5-j9w66","started":"2024-11-26T10:39:17.888413519Z","state":"Failed","terminated":"2024-11-26T10:39:21.944997573Z","updateUser":""}]}} using expr { exitMessage: "The 1st task of the taskGroup " + .taskgroup.id + " is in failed state" } at org.kie.kogito.expr.jq.JqExpression.eval(JqExpression.java:222) at org.kie.kogito.expr.jq.JqExpression.eval(JqExpression.java:196) at org.kie.kogito.serverless.workflow.actions.BaseExpressionAction.evaluate(BaseExpressionAction.java:39) at org.kie.kogito.serverless.workflow.actions.ExpressionAction.execute(ExpressionAction.java:36) at org.jbpm.workflow.instance.impl.NodeInstanceImpl.executeAction(NodeInstanceImpl.java:279) ... 108 more Caused by: net.thisptr.jackson.jq.exception.JsonQueryTypeException: string ("The 1st ta...) and number (5) cannot be added
and at the MTA task pod logs:
time=2024-11-26T10:39:19Z level=info msg=[binding] Hub RichClient created. time=2024-11-26T10:39:19Z level=info msg=[addon] Addon (adapter) created. time=2024-11-26T10:39:19Z level=info msg=[binding] |200| GET /tasks/5 time=2024-11-26T10:39:19Z level=info msg=[binding] |204| DELETE /tasks/5/report time=2024-11-26T10:39:19Z level=info msg=[binding] |201| POST /tasks/5/report time=2024-11-26T10:39:19Z level=info msg=[addon] Addon reported started. time=2024-11-26T10:39:19Z level=info msg=[addon] Addon reported: activity. entry=Fetching application. time=2024-11-26T10:39:19Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |200| GET /applications/5 time=2024-11-26T10:39:20Z level=info msg=[binding] |201| POST /files/ssh-agent.output time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[CMD] Running: /usr/bin/ssh-agent -a /tmp/agent.1 time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[addon] Addon attached. ID=355 activity=2 name=ssh-agent.output time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[CMD] /usr/bin/ssh-agent succeeded. time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |204| PATCH /files/355 time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[SSH] Agent started. time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |200| GET /proxies time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[FILE] Created /addon/settings.xml. time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[MVN] Using settings file(path=/addon/settings.xml). time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |200| GET /settings/git.insecure.enabled time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[GIT] Cloning: https://foo.bar.com time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |200| GET /proxies time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[FILE] Created /addon/.gitconfig. time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |201| POST /files/git.output time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[CMD] Running: /usr/bin/git clone https://foo.bar.com /addon/source/foo time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[addon] Addon attached. ID=356 activity=9 name=git.output time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: activity. entry=[CMD] /usr/bin/git failed: exit status 128 time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[binding] |204| PATCH /files/356 time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: error. error={Error exit status 128} time=2024-11-26T10:39:20Z level=info msg=[binding] |200| PUT /tasks/5/report time=2024-11-26T10:39:20Z level=info msg=[addon] Addon reported: failed. reason=exit status 128
It is clear that the source of the error is the bad input, but this is not what is perpetuated up to the Results screen.
Expected results: If source of error is the bad input, then that is what should appear in the results screen.