eclipse-edc / eclipse-edc/IdentityHub

Credential remains `REQUESTED` after renewal request reaches `ERROR` with no recovery strategy

Open
#1,085 0 comments 0 reactions 0 assignees View on GitHub
triage
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.