- 
    
Bug
 - 
    Resolution: Fixed
 - 
    
Critical
 - 
    None
 
After testing the new nested sequential stages feature in version 1.3 of pipeline-model-definition recently released, I found that the error handling is not working as (I) expected. Given this minimal Jenkinsfile
pipeline {
    agent none
    stages {
        stage('A') {
            stages {
                stage('A.1') {
                    steps {
                        error('Error in stage A.1')
                    }
                }
            }
        }
        stage('B') {
            steps {
                echo('Executing stage B')
            }
        }
    }
}
I expect that stage B is not executed, but it is, as the console output shows:
Branch indexing
 > git rev-parse --is-inside-work-tree # timeout=10
Setting origin to git@git:verification
 > git config remote.origin.url git@git:verification # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/*
Seen branch in repository origin/master
Seen branch in repository origin/work/TEST-1234
Seen 2 remote branches
Obtained Jenkinsfile from fbd58047af16f0ab665ec6d550d21ceff1e91cfb
Running in Durability level: MAX_SURVIVABILITY
First time build. Skipping changelog.
[Pipeline] stage
[Pipeline] { (A)
[Pipeline] stage
[Pipeline] { (A.1)
[Pipeline] error
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (B)
[Pipeline] echo
Executing stage B
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
Finished: FAILURE
Given a pipeline without nested stages the behaviour is as expected; stage B is skipped when stage A fails:
pipeline {
    agent none
    stages {
        stage('A') {
            steps {
                error('Error in stage A')
            }
        }
        stage('B') {
            steps {
                echo('Executing stage B')
            }
        }
    }
}
Console output shows that stage B is skipped:
Branch indexing
 > git rev-parse --is-inside-work-tree # timeout=10
Setting origin to git@git:verification
 > git config remote.origin.url git@git:verification # timeout=10
Fetching origin...
Fetching upstream changes from origin
 > git --version # timeout=10
using GIT_SSH to set credentials 
 > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/*
Seen branch in repository origin/master
Seen branch in repository origin/work/TEST-1234
Seen 2 remote branches
Obtained Jenkinsfile from 203fe77650dbdd5392790cfe53558d7ef67fe0de
Running in Durability level: MAX_SURVIVABILITY
First time build. Skipping changelog.
[Pipeline] stage
[Pipeline] { (A)
[Pipeline] error
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (B)
Stage "B" skipped due to earlier failure(s)
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
ERROR: Error in stage A
Finished: FAILURE
- links to