eclipse-edc / eclipse-edc/IdentityHub
Credential remains `REQUESTED` after renewal request reaches `ERROR` with no recovery strategy
- Dominant language
- Java
- Stars
- 46
- Forks
- 61
- Avg merge
- 20h 35m
- Merged PRs (30d)
- 22
Description
# Bug Report
## Describe the Bug
Upon automatic credential renewal, if the issuer cannot be reached for instance due to a temporary outage, it permanently prevents further automatic renewal of that credential.
`CredentialWatchdog` marks a credential eligible for renewal with `REQUESTED`. `ALLOWED_STATES` excludes `REQUESTED` so subsequent scans skip this credential.
in `CredentialRequestManagerImpl` if resolving the issuer endpoint or sending the request fails that request goes into an error state. Meanwhile the underlying existing credential remains in `REQUESTED` but is never picked up again by `CredentialWatchdog`.
### Expected Behavior
retryable handling with backoff and limits in case a renewal error may be recoverable to make it more resilient against temporary problems.
If an error is terminal the credential should transition to a state to reflect that and not remain in `REQUESTED`.
### Observed Behavior
## Steps to Reproduce
## Context Information
_Add any other context about the problem here._
- Used version [e.g. EDC v1.0.0]
- OS: [e.g. iOS, Windows]
- ...
## Detailed Description
_If applicable, add screenshots and logs to help explain your problem._
## Possible Implementation
Retry temporary renewal failures with bounded backoff. If the renewal request reaches terminal failure, update the existing credential’s renewal status so it no longer remains indefinitely REQUESTED, and clearly indicate that renewal failed.
Contributor guide
Research direction
Start by tracing CredentialWatchdog and CredentialRequestManagerImpl to follow the renewal state transition when issuer resolution or request sending fails. Define bounded retry behavior for recoverable errors and a non-REQUESTED state for terminal failures. Done means a failed renewal can be retried when appropriate and never leaves the credential permanently skipped in REQUESTED.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100