aws / aws/aws-durable-execution-sdk-python

[Feature]: Add targeted retries for retryable SerDes failures

オープン
#681 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
enhancement parity pkg:sdk
主要言語
Python
スター
53
フォーク
25
平均マージ
1日 19時間
マージ済み PR(30日)
40

説明

## 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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、既存の RetryableSerDesError の分類と、issue に記載されている設定済みの SerDes 呼び出しを見つけます。aws/aws-durable-execution-sdk-java#648 の stage レベルの動作と比較してください。完了条件は、再試行可能な SerDes の失敗のみが、上限のある決定論的な policy テストによって再試行され、再試行不可能なエラーと最終的な exception の詳細は変更されないことです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
backend
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
52/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。