## Description
When the token fetched from client credentials grant type in oauth2 is
expired, a request to the token endpoint is made to fetch a new token.
But sometimes the token endpoint fail. It can be intermittent failure, a
retry will fetch the desired token.
When the failure occurs, the datasource context mono goes into an error
state. As this mono is cached, all the subsequent authenticated api
calls from the user fetches the cached error mono resulting in failures
and thus the token endpoint is never retried.
For the fix, while checking if datasource context is valid, added the
check if its in a failed state. If yes, then the context will be
considered invalid.
Fixes#20538
## Type of change
- Bug fix (non-breaking change which fixes an issue)
## How Has This Been Tested
- Manual
## Checklist:
### Dev activity
- [x] My code follows the style guidelines of this project
- [x] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] PR is being merged under a feature flag
### QA activity:
- [ ] Test plan has been approved by relevant developers
- [ ] Test plan has been peer reviewed by QA
- [ ] Cypress test cases have been added and approved by either SDET or
manual QA
- [ ] Organized project review call with relevant stakeholders after
Round 1/2 of QA
- [ ] Added Test Plan Approved label after reveiwing all Cypress test