aws / aws/aws-durable-execution-sdk-python
[Feature]: Add targeted retries for retryable SerDes failures
- Lingua principale
- Python
- Stelle
- 53
- Fork
- 25
- Merge medio
- 1g 19h
- PR unite (30g)
- 40
Descrizione
## What would you like?
Add a targeted retry decorator for transient SerDes failures.
Python already exposes `RetryableSerDesError`, but the configured SerDes call is currently propagated after the first failure. External-storage transformations such as S3 Files/EFS access can fail transiently without requiring the entire durable operation to be rerun.
## Possible Implementation
- Provide a `RetrySerDes` decorator, and make it usable as a stage if/when a composable SerDes pipeline is added.
- Retry only `RetryableSerDesError`; propagate `SerDesError` and other non-retryable failures immediately.
- Accept a bounded retry policy with maximum attempts and optional backoff/jitter, reusing existing retry-strategy concepts where that does not imply durable checkpoints.
- Pass the same value/data and `SerDesContext` to every attempt.
- Preserve the final exception type, causal chain, error data, and stack information after exhaustion.
- Ensure retries wrap only the selected SerDes transformation rather than restarting the value codec or durable operation.
- Add deterministic tests with an injected sleeper/clock so retry tests do not depend on real delays.
## Is this a breaking change?
No.
## Does this require an RFC?
No.
## Additional Context
This builds on the existing `RetryableSerDesError` classification rather than introducing another recoverability mechanism. The Java SDK implementation in aws/aws-durable-execution-sdk-java#648 provides a stage-level retry decorator with the same targeted behavior.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia individuando la classificazione esistente di RetryableSerDesError e la chiamata SerDes configurata descritta nell’issue; confronta il comportamento a livello di stage in aws/aws-durable-execution-sdk-java#648. Il lavoro è completo quando vengono ritentati solo i fallimenti SerDes ritentabili, con test della policy limitati e deterministici, mentre gli errori non ritentabili e i dettagli dell’eccezione finale rimangono invariati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- backend
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 52/100