[ 
https://issues.apache.org/jira/browse/CASSANDRA-20833?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18013761#comment-18013761
 ] 

Dmitry Konstantinov commented on CASSANDRA-20833:
-------------------------------------------------

tested on pre-ci-apache-cassandra

> Jenkins pipeline: add CauseOfInterruption logging to simplify troubleshooting
> -----------------------------------------------------------------------------
>
>                 Key: CASSANDRA-20833
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-20833
>             Project: Apache Cassandra
>          Issue Type: Improvement
>          Components: Build, CI
>            Reporter: Dmitry Konstantinov
>            Assignee: Dmitry Konstantinov
>            Priority: Normal
>             Fix For: 5.0.x, 5.x
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently when a test split of Jenkins pipeline is aborted due to a timeout 
> or if an agent went offline Jenkins aborts other parallel steps too. All the 
> steps: originally failed and others are looking very similar in Pipeline 
> overview and it is time consuming activity to find the original split failure.
> Jenkins throws an exception in this case but it does not have a message and 
> stack trace is not informative and generic as well, example:
> {code:java}
> org.jenkinsci.plugins.workflow.steps.FlowInterruptedException
>       at PluginClassLoader for 
> workflow-durable-task-step//org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$RemovedNodeListener.lambda$cancelOwnerExecution$7(ExecutorStepExecution.java:432)
>       at PluginClassLoader for 
> workflow-durable-task-step//org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask$1.onSuccess(ExecutorStepExecution.java:524)
>       at PluginClassLoader for 
> workflow-durable-task-step//org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask$1.onSuccess(ExecutorStepExecution.java:520)
>       at 
> com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1139)
>       at 
> com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:31)
>       at 
> com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1307)
>       at 
> com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:1070)
>       at 
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:794)
>       at 
> com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:49)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsFlowExecution$5.onSuccess(CpsFlowExecution.java:1118)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsFlowExecution$5.onSuccess(CpsFlowExecution.java:1096)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsFlowExecution$4$1.run(CpsFlowExecution.java:1012)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService.lambda$wrap$2(CpsVmExecutorService.java:85)
>       at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>       at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
>       at 
> hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
>       at 
> jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
>       at 
> jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
>       at 
> jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51)
>       at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
>       at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
>       at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown 
> Source)
>       at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown 
> Source)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.call(CpsVmExecutorService.java:53)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.call(CpsVmExecutorService.java:50)
>       at 
> org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
>       at 
> org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
>       at PluginClassLoader for 
> workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService.lambda$categoryThreadFactory$0(CpsVmExecutorService.java:50)
>       at java.base/java.lang.Thread.run(Unknown Source)
>       Suppressed: org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: 
> 363f0c37-5777-48ab-92e6-9aa56ec5431d
> {code}
> FlowInterruptedException has additional info which may help here: 
> List<CauseOfInterruption> getCauses() 
> [https://github.com/jenkinsci/workflow-step-api-plugin/blob/518c5dcb24c0d692abe25aea4c03f8273ac06ca4/src/main/java/org/jenkinsci/plugins/workflow/steps/FlowInterruptedException.java#L93]
>  
> We can extract and print this info which contains the name of the original 
> failed step. 
>  * Example of the original split failure:
> {code:java}
> CauseOfInterruption: 
> org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$RemovedNodeCause
>  - Agent was removed
> {code}
> * Example of aborted split due to another split error:
> {code:java}
> CauseOfInterruption: 
> org.jenkinsci.plugins.workflow.cps.steps.ParallelStep$FailFastCause - Failed 
> in branch jvm-dtest jdk11 10/16
> {code}
>  
> Note: to use it the method should be added to the approved Jenkins API:
> {code:java}
> method org.jenkinsci.plugins.workflow.steps.FlowInterruptedException 
> getCauses 
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to