Skip to content

Plugin hook info records missing state/metadata fields at invocation, attempt, and change hooks #604

Description

@wangyb-A

Summary

Java's plugin info records lack metadata/state fields the Python/JS SDKs expose. Live cross-SDK conformance evidence exists per gap.

GA scope update: payload surfaces (execution input/result, operation result) have been moved OUT of GA conformance scope — experimental, no longer asserted by the field-shape requirements (see aws/aws-durable-execution-conformance-tests#72). They remain listed at the end as post-GA parity items; the operation-result gap is still evidenced by the untouched behavioral requirement 10-14 (#581).

In-scope missing fields (verified against sdk/src/main/java/software/amazon/lambda/durable/plugin/)

InvocationInfo — missing operations and updatedOperations maps (JS exposes both on every invocation hook).
InvocationEndInfo — missing the operations map AND executionStartTime (present on the start info but dropped from the end record — confirmed by live probe).
UserFunctionStartInfo/UserFunctionEndInfo (attempt hooks) — missing the operation-level isReplay indicator (Python and JS carry it on attempt infos; Java only has the distinct isReplayingChildren).
OperationChangeItemInfo — missing attempt and a replay indicator (JS/Python change items are full operation infos).
Secondary: UserFunctionEndInfo uses boolean succeeded where JS/Python use a SUCCEEDED/FAILED outcome enum.

Evidence

Field-shape requirements 10-19..10-23 (aws/aws-durable-execution-conformance-tests#72), canonical-dump handlers in #602 — live run 18/21: 10-19 (maps + end-side start time), 10-21 (isReplay presence), 10-22 (item attempt/replay) red; 10-20 and 10-23 green. Notably green: end-info isFirstInvocation (ahead of JS), OperationInfo.status (#597), attempt-end timestamps (ahead of JS), isReplayingChildren semantics.

Post-GA / experimental parity items (not currently asserted)

Suggested fix

Add the operations/updated-operations maps + end-side executionStartTime to the invocation infos (DurableExecutor/ExecutionManager), isReplay to the user-function infos, and attempt+replay indicator to OperationChangeItemInfo (via PluginInfoConverter). Conformance 10-19/10-21/10-22 flip green with no test changes.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions