Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-43292

The failed parallel build step should be focused and aborted when failFast

    • pipeline-graph-analysis 1.10

      Scope

      • The aborted parallel branches should be marked as aborted.
      • The failing branch should be marked as failed
      • Ensure that only the failing branch is selected in the UI

      Notes
      Stepping through the code it looks like the aborted branches are marked as Result.ABORTED but this information is not bubbled up from bismuth. Aborted steps in this scenario are always reported as failed.

      Original request
      Using a pipeline job like: 

      pipeline {
          agent any
          stages {
              stage ('parallel with failFast') {
                  steps {
                      parallel(
                        b: { 
                            echo 'died'
                            sh "exit 1"
                        },
                        // make sure this branch takes longer than b
                        a: { sh "sleep 35"},
                        failFast: true
                      )    
                  }
              }        
          }
      }
      

      I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
      Also the aborted branch(es) should be visually different than the actual failed branch.

      Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

      I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

      Fixing this would significantly improve using massively parallel builds.

      Data returned from Blue Ocean REST API

      [
         {
            "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
            "_links":{
               "self":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
               },
               "actions":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
               },
               "steps":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
               }
            },
            "actions":[
      
            ],
            "displayName":"parallel with failFast",
            "durationInMillis":1025,
            "id":"6",
            "input":null,
            "result":"FAILURE",
            "startTime":"2017-04-04T14:44:32.809+1000",
            "state":"FINISHED",
            "causeOfBlockage":null,
            "edges":[
               {
                  "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                  "id":"10"
               },
               {
                  "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                  "id":"9"
               }
            ]
         },
         {
            "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
            "_links":{
               "self":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
               },
               "actions":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
               },
               "steps":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
               }
            },
            "actions":[
      
            ],
            "displayName":"a",
            "durationInMillis":1022,
            "id":"10",
            "input":null,
            "result":"FAILURE",
            "startTime":"2017-04-04T14:44:32.812+1000",
            "state":"FINISHED",
            "causeOfBlockage":null,
            "edges":[
      
            ]
         },
         {
            "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
            "_links":{
               "self":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
               },
               "actions":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
               },
               "steps":{
                  "_class":"io.jenkins.blueocean.rest.hal.Link",
                  "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
               }
            },
            "actions":[
      
            ],
            "displayName":"b",
            "durationInMillis":1024,
            "id":"9",
            "input":null,
            "result":"FAILURE",
            "startTime":"2017-04-04T14:44:32.810+1000",
            "state":"FINISHED",
            "causeOfBlockage":null,
            "edges":[
      
            ]
         }
      ]
      

          [JENKINS-43292] The failed parallel build step should be focused and aborted when failFast

          Staffan Forsell created issue -
          James Dumay made changes -
          Description Original: Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.
          New:
          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}
          James Dumay made changes -
          Summary Original: The failed parallel build step should be focused using failFast New: The failed parallel build step should be focused and aborted when failFast
          James Dumay made changes -
          Description Original:
          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}
          New: *Scope*
          * The aborted parallel branches should be marked as aborted.
          * The failing branch should be marked as failed
          * Ensure that only the failing branch is selected in the UI

          *Notes*
          Stepping through the code it looks like the aborted branches are marked as {{Result.ABORTED}} but this information is not bubbled up from bismuth.

          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}

          James Dumay added a comment -

          fkykko thanks for filing this and I am going to accept it onto our backlog for future improvements. There is a significant change that needs to be made to the parts of Pipeline API to get the correct information (aborted parallel branches) display in Blue Ocean. I will raise this with our friends over in the Pipeline team and see what they can do.

          James Dumay added a comment - fkykko thanks for filing this and I am going to accept it onto our backlog for future improvements. There is a significant change that needs to be made to the parts of Pipeline API to get the correct information (aborted parallel branches) display in Blue Ocean. I will raise this with our friends over in the Pipeline team and see what they can do.
          James Dumay made changes -
          Labels New: pipeline-improvement
          James Dumay made changes -
          Epic Link New: JENKINS-35750 [ 171713 ]
          James Dumay made changes -
          Sprint New: Blue Ocean up next [ 251 ]
          James Dumay made changes -
          Description Original: *Scope*
          * The aborted parallel branches should be marked as aborted.
          * The failing branch should be marked as failed
          * Ensure that only the failing branch is selected in the UI

          *Notes*
          Stepping through the code it looks like the aborted branches are marked as {{Result.ABORTED}} but this information is not bubbled up from bismuth.

          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}
          New: *Scope*
          * The aborted parallel branches should be marked as aborted.
          * The failing branch should be marked as failed
          * Ensure that only the failing branch is selected in the UI

          *Notes*
          Stepping through the code it looks like the aborted branches are marked as {{Result.ABORTED}} but this information is not bubbled up from bismuth. Aborted steps in this scenario are always reported as failed.

          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}
          James Dumay made changes -
          Description Original: *Scope*
          * The aborted parallel branches should be marked as aborted.
          * The failing branch should be marked as failed
          * Ensure that only the failing branch is selected in the UI

          *Notes*
          Stepping through the code it looks like the aborted branches are marked as {{Result.ABORTED}} but this information is not bubbled up from bismuth. Aborted steps in this scenario are always reported as failed.

          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}
          New: *Scope*
          * The aborted parallel branches should be marked as aborted.
          * The failing branch should be marked as failed
          * Ensure that only the failing branch is selected in the UI

          *Notes*
          Stepping through the code it looks like the aborted branches are marked as {{Result.ABORTED}} but this information is not bubbled up from bismuth. Aborted steps in this scenario are always reported as failed.

          *Original request*
          Using a pipeline job like: 
          {code:java}
          pipeline {
              agent any
              stages {
                  stage ('parallel with failFast') {
                      steps {
                          parallel(
                            b: {
                                echo 'died'
                                sh "exit 1"
                            },
                            // make sure this branch takes longer than b
                            a: { sh "sleep 35"},
                            failFast: true
                          )
                      }
                  }
              }
          }
          {code}
          I would expect the failed step to be focused when entering the build page, instead the aborted branch and log is focused.
           Also the aborted branch(es) should be visually different than the actual failed branch.

          Technically more than one branch could fail before being aborted any any such branch should also be indicated as failed (like today).

          I attached an examples of current and expected behavior of how I wish the build page would look for such a failed build. The aborted job indicator could of course be different, I just want it to stand out from an actual failed job. 

          Fixing this would significantly improve using massively parallel builds.

          *Data returned from Blue Ocean REST API*
          {code}
          [
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/6/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"parallel with failFast",
                "durationInMillis":1025,
                "id":"6",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.809+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"10"
                   },
                   {
                      "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                      "id":"9"
                   }
                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/10/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"a",
                "durationInMillis":1022,
                "id":"10",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.812+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             },
             {
                "_class":"io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl",
                "_links":{
                   "self":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/"
                   },
                   "actions":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/actions/"
                   },
                   "steps":{
                      "_class":"io.jenkins.blueocean.rest.hal.Link",
                      "href":"/blue/rest/organizations/jenkins/pipelines/JENKINS-43292/runs/1/nodes/9/steps/"
                   }
                },
                "actions":[

                ],
                "displayName":"b",
                "durationInMillis":1024,
                "id":"9",
                "input":null,
                "result":"FAILURE",
                "startTime":"2017-04-04T14:44:32.810+1000",
                "state":"FINISHED",
                "causeOfBlockage":null,
                "edges":[

                ]
             }
          ]
          {code}

            dnusbaum Devin Nusbaum
            fkykko Staffan Forsell
            Votes:
            20 Vote for this issue
            Watchers:
            27 Start watching this issue

              Created:
              Updated:
              Resolved: