https://github.com/ansible/ansible/blob/adcdee9bb0031577698246fcfc51f8af63a56a17/lib/ansible/playbook/task.py#L124

##### SUMMARY
Handlers can not be referenced with the `FQCN : handler name` notation if the handler name contains the role name.

Not sure what the reasoning is behind this, but a `httpd` role can't have a `restart httpd` handler name if you want to notify it with `notify: 'httpd : restart httpd'`

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
task handler fqcn

##### ANSIBLE VERSION
```
ansible 2.9.10
  config file = /home/twouters/.ansible.cfg
  configured module search path = ['/home/twouters/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.3 (default, May 17 2020, 18:15:42) [GCC 10.1.0]
```

##### CONFIGURATION
Default configuration

##### OS / ENVIRONMENT
All (N/A)

##### STEPS TO REPRODUCE
```
➜  issues-70582 $ find ./
./
./roles
./roles/test
./roles/test/handlers
./roles/test/handlers/main.yml
./roles/test/tasks
./roles/test/tasks/main.yml
./pb.yml
```

`pb.yml`
```yaml
---

- hosts: localhost
  roles:
    - test
```

`roles/test/tasks/main.yml`
```yaml
---

- name: always trigger handler
  command: /bin/true
  changed_when: True
  notify:
    - 'test : handler 1'

- name: always trigger handler 2
  command: /bin/true
  changed_when: True
  notify:
    - 'test : handler 2 test'
```

`roles/test/handlers/main.yml`
```yaml
---

- name: handler 1
  debug:
    msg: this is handler 1

- name: handler 2 test
  debug:
    msg: this handler is not found
```

##### EXPECTED RESULTS
Two handlers are detected.

##### ACTUAL RESULTS
Only the handler that doesn't contain the role name in its name gets detected

```
➜  issues-70582 $ ansible-playbook pb.yml           
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not
match 'all'

PLAY [localhost] ***********************************************************************************************

TASK [Gathering Facts] *****************************************************************************************
ok: [localhost]

TASK [test : always trigger handler] ***************************************************************************
changed: [localhost]

TASK [test : always trigger handler 2] *************************************************************************
ERROR! The requested handler 'test : handler 2 test' was not found in either the main handlers list nor in the listening handlers list
```
#
#
#
#
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import cmd
import functools
import os
import pprint
import sys
import threading
import time
from collections import deque
from multiprocessing import Lock
from jinja2.exceptions import UndefinedError
from ansible import constants as C
from ansible import context
from ansible.errors import AnsibleError, AnsibleFileNotFound, AnsibleParserError, AnsibleUndefinedVariable
from ansible.executor import action_write_locks
from ansible.executor.process.worker import WorkerProcess
from ansible.executor.task_result import TaskResult
from ansible.executor.task_queue_manager import CallbackSend
from ansible.module_utils.six.moves import queue as Queue
from ansible.module_utils.six import iteritems, itervalues, string_types
from ansible.module_utils._text import to_text
from ansible.module_utils.connection import Connection, ConnectionError
from ansible.playbook.conditional import Conditional