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

[Feature]: Deduplicate SerDes deserialization within an invocation

Ouverte
#678 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement parity pkg:sdk
Langage dominant
Python
Étoiles
53
Forks
25
Merge moyen
1 j 20 h
PR mergées (30 j)
39

Description

## What would you like?

Deduplicate repeated SerDes deserialization within a single Lambda invocation.

Context-dependent SerDes implementations may perform filesystem or network I/O. Repeated access to the same checkpointed result or exception currently invokes the configured SerDes again, even when the serialized input and durable payload identity are unchanged.

## Possible Implementation

- Add an invocation-scoped deserialization cache around SDK-managed SerDes calls.
- Key entries by SerDes instance identity, durable execution ARN, operation/entity identity, payload kind when available, and a digest of the serialized input.
- Cache successful values, including `None`, but never cache failures.
- Bound completed entries with an LRU or weak-reference policy so large deserialized values are not retained indefinitely.
- If SDK-managed child/concurrency threads can request the same value concurrently, share one in-flight result rather than issuing duplicate external reads.
- Clear all entries at the end of the Lambda invocation; do not use a process-global cache across replays.
- Add tests for cache hits, distinct contexts/data, `None`, failures, eviction, and concurrent callers.

## Is this a breaking change?

No.

## Does this require an RFC?

No.

## Additional Context

This is primarily valuable for filesystem and other external-storage SerDes implementations. The Java SDK work in aws/aws-durable-execution-sdk-java#648 uses an invocation-scoped bounded cache and in-flight deduplication.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par localiser les appels SerDes gérés par le SDK ainsi que le cycle de vie de l’invocation Lambda où un cache limité à la portée de l’invocation pourrait être établi et vidé. Ajoutez des tests couvrant les accès réussis au cache, les contextes et données distincts, les valeurs None, les échecs, l’éviction et les appelants concurrents ; le travail est terminé lorsque les requêtes correspondantes répétées sont dédupliquées sans mettre en cache les échecs ni franchir les limites d’invocation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
backend, cloud
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.