• Blue Ocean 1.4 - beta 3, Blue Ocean 1.4 - beta 2

      After recent upgrade to 1.3.0 the existing views are broken with the following error. Not sure if it is going to be the same problem for the new runs, yet to try out. Appreciate some inputs?

      Have reported the similar issue JENKINS-46436 but slightly different with the last version 1.2.0, probably something related to that change. 

      Error rendering PipelineRunGraph: TypeError: Cannot read property 'id' of undefined
      

          [JENKINS-47480] Blue Ocean: Error rendering PipelineRunGraph

          Ben Langfeld added a comment -

          I can reproduce this with nrayapati's script (though only two stages are necessary) based on the 1.3.2 docker image.

          Like john_fo, our production use case does not use nested parallel statements, but does iteratively build steps to run in parallel. This reproduction, however, doesn't present the issue:

          stepsForParallel = [:]
          for(int i = 0; i < 20; i++) {
            stepsForParallel[i] = { echo i.toString() }
          }
          parallel stepsForParallel
          
          stepsForParallel = [:]
          for(int i = 0; i < 20; i++) {
            stepsForParallel[i] = { echo i.toString() }
          }
          parallel stepsForParallel
          

          I'm attempting to reproduce based on the current master branch.

          Ben Langfeld added a comment - I can reproduce this with nrayapati 's script (though only two stages are necessary) based on the 1.3.2 docker image. Like john_fo , our production use case does not use nested parallel statements, but does iteratively build steps to run in parallel. This reproduction, however, doesn't present the issue: stepsForParallel = [:] for ( int i = 0; i < 20; i++) { stepsForParallel[i] = { echo i.toString() } } parallel stepsForParallel stepsForParallel = [:] for ( int i = 0; i < 20; i++) { stepsForParallel[i] = { echo i.toString() } } parallel stepsForParallel I'm attempting to reproduce based on the current master branch.

          Ben Langfeld added a comment - - edited

          In further testing, again against the 1.3.2 docker image, this works:

          def stepsForParallel = [:]
          for(int i = 0; i < 98; i++) {
            stepsForParallel[i] = { echo i.toString() }
          }
          parallel stepsForParallel
          
          stepsForParallel = [:]
          for(int i = 0; i < 2; i++) {
            stepsForParallel[i] = { echo i.toString() }
          }
          parallel stepsForParallel
          

          and this fails:

          def stepsForParallel = [:]
          for(int i = 0; i < 99; i++) {
            stepsForParallel[i] = { echo i.toString() }
          }
          parallel stepsForParallel
          
          stepsForParallel = [:]
          for(int i = 0; i < 2; i++) {
            stepsForParallel[i] = { echo i.toString() }
          }
          parallel stepsForParallel
          

          The problem here is not nesting, but ending up on the border between two stages when the page ends.

          The fix to request a much larger page size would prevent most people from running into this: https://github.com/jenkinsci/blueocean-plugin/commit/ce4a4b39c4ff2a2d979195da18430205957e7ca8. I've confirmed this resolves the issue in the above reproduction. Could that be released in 1.3.3 immediately cliffmeyers? This exact issue caused us 4 hours of chaos when we upgraded to 1.3.2 today, it really is a critical fix.

           

          Ben Langfeld added a comment - - edited In further testing, again against the 1.3.2 docker image, this works: def stepsForParallel = [:] for ( int i = 0; i < 98; i++) { stepsForParallel[i] = { echo i.toString() } } parallel stepsForParallel stepsForParallel = [:] for ( int i = 0; i < 2; i++) { stepsForParallel[i] = { echo i.toString() } } parallel stepsForParallel and this fails: def stepsForParallel = [:] for ( int i = 0; i < 99; i++) { stepsForParallel[i] = { echo i.toString() } } parallel stepsForParallel stepsForParallel = [:] for ( int i = 0; i < 2; i++) { stepsForParallel[i] = { echo i.toString() } } parallel stepsForParallel The problem here is not nesting, but ending up on the border between two stages when the page ends. The fix to request a much larger page size would prevent most people from running into this: https://github.com/jenkinsci/blueocean-plugin/commit/ce4a4b39c4ff2a2d979195da18430205957e7ca8.  I've confirmed this resolves the issue in the above reproduction. Could that be released in 1.3.3 immediately cliffmeyers ? This exact issue caused us 4 hours of chaos when we upgraded to 1.3.2 today, it really is a critical fix.  

          Cliff Meyers added a comment -

          Ping to jamesdumay and vivek

          Cliff Meyers added a comment - Ping to jamesdumay and vivek

          Vivek Pandey added a comment -

          Thanks benlangfeld. I have opened a PR https://github.com/jenkinsci/blueocean-plugin/pull/1556. Once it passes we can plan a 1.3.3 release.

          Vivek Pandey added a comment - Thanks benlangfeld . I have opened a PR https://github.com/jenkinsci/blueocean-plugin/pull/1556 . Once it passes we can plan a 1.3.3 release.

          Michael Neale added a comment -

          Fixed in master and pending fix for 1.3.3 release

          Michael Neale added a comment - Fixed in master and pending fix for 1.3.3 release

          Vivek Pandey added a comment -

          Fixed in release 1.3.3. Release is out but it might take 4-6 hours to get across mirrors.

          Vivek Pandey added a comment - Fixed in release 1.3.3. Release is out but it might take 4-6 hours to get across mirrors.

          Ben Langfeld added a comment -

          I can confirm that this is fixed in 1.3.3 for our production use case.

          Ben Langfeld added a comment - I can confirm that this is fixed in 1.3.3 for our production use case.

          Thanks vivek and benlangfeld Our pipeline are fixed too.

          Naresh Rayapati added a comment - Thanks vivek and benlangfeld Our pipeline are fixed too.

          Karl Shultz added a comment - - edited

          Testing Notes:

          • For this particular issue, manual verification, using the pipelines kindly provided by benlangfeld, should suffice.
          • Longer term:
            • Test cases with longer, more parallel, more complex Jenkinsfiles should be implemented to make sure that Blue Ocean properly renders them
            • A repo of pipelines which can be used to trigger past issues could be collected over time, and used to inform these test cases

          Karl Shultz added a comment - - edited Testing Notes: For this particular issue, manual verification, using the pipelines kindly provided by benlangfeld , should suffice. Longer term: Test cases with longer, more parallel, more complex Jenkinsfiles should be implemented to make sure that Blue Ocean properly renders them A repo of pipelines which can be used to trigger past issues could be collected over time, and used to inform these test cases

          Karl Shultz added a comment -

          Adding a link to the child ticket, which talks about exploring some more automated complex test cases.

          Karl Shultz added a comment - Adding a link to the child ticket, which talks about exploring some more automated complex test cases.

            vivek Vivek Pandey
            nrayapati Naresh Rayapati
            Votes:
            2 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated:
              Resolved: