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

[Feature]: Deduplicate SerDes deserialization within an invocation

Offen
#678 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement parity pkg:sdk
Vorherrschende Sprache
Python
Sterne
53
Forks
25
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
40

Beschreibung

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die vom SDK verwalteten SerDes-Aufrufe und den Lebenszyklus der Lambda-Aufrufe zu lokalisieren, in dem ein auf Aufrufe begrenzter Cache eingerichtet und geleert werden könnte. Füge Tests hinzu, die Cache-Treffer, unterschiedliche Kontexte und Daten, None-Werte, Fehler, Eviction und nebenläufige Aufrufer abdecken; fertig ist die Arbeit, wenn wiederholte übereinstimmende Requests dedupliziert werden, ohne Fehler zu cachen oder Aufrufgrenzen zu überschreiten.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend, cloud
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.