### Summary

In Ansible core 2.11.6 environment, `end_play` will exit the current play and continue to run the following plays. While in Ansible core 2.12.1 environment, `end_play` will exit the entire playbook. Is this the expected result of the change? Thanks.

### Issue Type

Bug Report

### Component Name

meta

### Ansible Version

```console
$ ansible --version
ansible [core 2.12.1]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.12 (default, Dec 12 2021, 11:39:22) [GCC 7.3.0]
  jinja version = 3.0.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed
No changes.
```


### OS / Environment

Ubuntu 18.04

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
- name: play1
  hosts: localhost
  gather_facts: no
  tasks:
    - debug:
        msg: "play 1 task 1"
    - meta: end_play
    - debug:
        msg: "play 1 task 2"

- name: play2
  hosts: localhost
  gather_facts: no
  tasks:
    - debug:
        msg: "play 2 task 1"
    - debug:
        msg: "play 2 task 2"
```


### Expected Results

The task in the first play not executed after `end_play` and tasks in play 2 are executed.

### Actual Results

```console
PLAYBOOK: test.yml ***********************************************************************************************************************
2 plays in test.yml

PLAY [play1] *****************************************************************************************************************************
META: ran handlers

TASK [debug] *****************************************************************************************************************************
task path: /root/workspace/test_yml/test_end_play/test.yml:5
ok: [localhost] => {
    "msg": "play 1 task 1"
}

TASK [meta] ******************************************************************************************************************************
task path: /root/workspace/test_yml/test_end_play/test.yml:7
META: ending play

PLAY RECAP *******************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
```
While in Ansible core 2.11.6 environment:
```
PLAYBOOK: test.yml ***********************************************************************************************************************
2 plays in test.yml

PLAY [play1] *****************************************************************************************************************************
META: ran handlers

TASK [debug] *****************************************************************************************************************************
task path: /root/test_yml/test_end_play/test.yml:5
ok: [localhost] => {
    "msg": "play 1 task 1"
}

TASK [meta] ******************************************************************************************************************************
task path: /root/test_yml/test_end_play/test.yml:7
META: ending play

PLAY [play2] *****************************************************************************************************************************
META: ran handlers

TASK [debug] *****************************************************************************************************************************
task path: /root/test_yml/test_end_play/test.yml:15
ok: [localhost] => {
    "msg": "play 2 task 1"
}

TASK [debug] *****************************************************************************************************************************
task path: /root/test_yml/test_end_play/test.yml:18
ok: [localhost] => {
    "msg": "play 2 task 2"
}
META: ran handlers
META: ran handlers

PLAY RECAP *******************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
```
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
break
            else:
                play_hosts = []
                for x in range(serial):
                    if len(all_hosts) > 0:
                        play_hosts.append(all_hosts.pop(0))
                serialized_batches.append(play_hosts)
            
            
            
            cur_item += 1
            if cur_item > len(serial_batch_list) - 1:
                cur_item = len(serial_batch_list) - 1
        return serialized_batches
    def _generate_retry_inventory(self, retry_path, replay_hosts):
        '''
        Called when a playbook run fails. It generates an inventory which allows
        re-running on ONLY the failed hosts.  This may duplicate some variable
        information in group_vars/host_vars but that is ok, and expected.
        '''
        try:
            makedirs_safe(os.path.dirname(retry_path))
            with open(retry_path, 'w') as fd:
                for x in replay_hosts:
                    fd.write("%s\n" % x)
        except Exception as e:
            display.warning("Could not create retry file '%s'.\n\t%s" % (retry_path, to_text(e)))
            return False
        return True