Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
85fdd8a
feat: add filesystem-backed SerDes
zhongkechen Aug 24, 2026
7040554
docs: design composable SerDes pipeline
zhongkechen Aug 24, 2026
4664666
feat: add retryable SerDes decorator
zhongkechen Aug 24, 2026
04455c4
docs: make SerDes executor opt-in
zhongkechen Aug 24, 2026
3471721
feat: complete composable filesystem SerDes
zhongkechen Aug 24, 2026
a0629ea
fix: preserve cloud operation timestamps
zhongkechen Aug 24, 2026
39de915
fix: address SerDes pipeline review findings
zhongkechen Aug 24, 2026
4ad54c4
Merge branch 'main' into issue-463-filesystem-serdes-approach-a
zhongkechen Aug 24, 2026
e9b25ab
fix: enforce SerDes pipeline boundaries
zhongkechen Aug 24, 2026
150a5f6
refactor: move filesystem SerDes into core SDK
zhongkechen Aug 25, 2026
6e544b5
fix: bound SerDes caching and input handling
zhongkechen Aug 25, 2026
c61834d
fix: preserve filesystem SerDes error ownership
zhongkechen Aug 25, 2026
eea1bf1
fix: replay checkpointed execution outputs
zhongkechen Aug 25, 2026
c56b606
Preserve retryable SerDes replay failures
zhongkechen Aug 25, 2026
be2712f
Fix SerDes forwarding and envelope versioning
zhongkechen Aug 25, 2026
db52f38
Preserve SerDes errors and validate envelope versions
zhongkechen Aug 25, 2026
26c1626
feat: support typed SerDes pipeline stages
zhongkechen Aug 25, 2026
24ec563
refactor: move SerDes chaining to stages
zhongkechen Aug 25, 2026
54665b2
refactor: allow typed value serde representations
zhongkechen Aug 25, 2026
e1b8469
Revert "refactor: allow typed value serde representations"
zhongkechen Aug 25, 2026
eaa9dd5
fix: preserve operation failure metadata
zhongkechen Aug 25, 2026
a02d21a
Revert "refactor: move SerDes chaining to stages"
zhongkechen Aug 25, 2026
016b5bb
refactor: compose SerDes through string stages
zhongkechen Aug 25, 2026
0d561b3
fix: address filesystem SerDes review feedback
zhongkechen Aug 25, 2026
4189fee
fix: detect decorated input SerDes pipelines
zhongkechen Aug 25, 2026
e6d317c
fix: harden SerDes pipeline boundaries
zhongkechen Aug 25, 2026
0036632
Merge branch 'main' into issue-463-filesystem-serdes-approach-a
zhongkechen Aug 25, 2026
2d84fc8
refactor: require SerDesStage pipeline components
zhongkechen Aug 25, 2026
310ca89
refactor: make filesystem and retry SerDes stage-only
zhongkechen Aug 25, 2026
9d3f22e
refactor: allow stages after filesystem SerDes
zhongkechen Aug 25, 2026
7e3f005
refactor: separate test runner input codecs
zhongkechen Aug 25, 2026
97296a2
fix: support filesystems without hard links
zhongkechen Aug 25, 2026
f22f491
fix: address latest SerDes review feedback
zhongkechen Aug 25, 2026
9eb06a5
docs: record binary SerDes pipeline alternative
zhongkechen Aug 25, 2026
f491d7f
fix: preserve SerDes pipeline context boundaries
zhongkechen Aug 25, 2026
cdf3752
refactor: make SerDes stages self-identifying
zhongkechen Aug 25, 2026
f996fca
Merge remote-tracking branch 'origin/issue-463-filesystem-serdes-appr…
zhongkechen Aug 25, 2026
c93d801
fix: complete filesystem SerDes parity
zhongkechen Aug 25, 2026
82a5695
feat: pass context explicitly to SerDes stages
zhongkechen Aug 25, 2026
4769bb5
Merge branch 'main' into issue-463-filesystem-serdes-approach-a
zhongkechen Aug 25, 2026
dd624fc
Update sdk/src/main/java/software/amazon/lambda/durable/serde/FileSys…
zhongkechen Aug 25, 2026
692d171
Merge branch 'main' into issue-463-filesystem-serdes-approach-a
zhongkechen Aug 25, 2026
e3bf9e4
fix: rebind terminal invoke errors
zhongkechen Aug 25, 2026
46a4098
refactor: scope SerDes context to stages
zhongkechen Aug 25, 2026
d25801c
refactor: return SerDes from pipeline composition
zhongkechen Aug 25, 2026
9a4a3a1
refactor: package filesystem SerDes stage
zhongkechen Aug 25, 2026
e4cb402
fix: reject malformed filesystem envelopes
zhongkechen Aug 25, 2026
48bb682
test: add filesystem SerDes end-to-end coverage
zhongkechen Aug 25, 2026
f0a3e0b
feat: configure filesystem envelope limit
zhongkechen Aug 25, 2026
627f682
docs: consolidate SerDes documentation
zhongkechen Aug 25, 2026
c9d4390
fix: address remaining SerDes review comments
zhongkechen Aug 25, 2026
97f0e10
test: enable filesystem SerDes E2E
zhongkechen Aug 25, 2026
6a813eb
feat: verify filesystem payload digests
zhongkechen Aug 26, 2026
4164e46
Persist filesystem SerDes E2E infrastructure
zhongkechen Aug 26, 2026
fd92ee9
Share filesystem E2E infrastructure across Java versions
zhongkechen Aug 26, 2026
7f09c77
Persist filesystem SerDes E2E Lambda stacks
zhongkechen Aug 26, 2026
daa3b20
Fix initial input SerDes decoding
zhongkechen Aug 26, 2026
98cc2f3
Address SerDes pipeline review findings
zhongkechen Aug 26, 2026
0d9e3c9
Address invoke and filesystem review findings
zhongkechen Aug 26, 2026
b78cc4f
Rebind forwarded step exceptions by attempt
zhongkechen Aug 26, 2026
0b38e86
Preserve scalar arrays in SerDes previews
zhongkechen Aug 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 54 additions & 1 deletion .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,44 @@ permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout

env:
AWS_REGION: us-west-2
FILESYSTEM_INFRASTRUCTURE_STACK_NAME: JavaSDKFileSystemSerDesE2EInfrastructureStack

jobs:
filesystem-infrastructure:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@e6de054238d6b7531b4efff3b6587d9aade6a06c # v6.2.3
with:
role-to-assume: "${{ secrets.TEST_ROLE_ARN }}"
role-session-name: java-language-sdk-test-infrastructure
aws-region: ${{ env.AWS_REGION }}
allowed-account-ids: ${{ secrets.TEST_ACCOUNT_ID }}
- name: Test SAM template generator
run: python3 -m unittest test_generate_template.py
working-directory: ./examples
- name: Generate persistent filesystem SerDes E2E infrastructure template
run: |
python3 generate-template.py \
--file-system-infrastructure-only \
--output filesystem-infrastructure-template.yaml
working-directory: ./examples
- name: Ensure persistent filesystem SerDes E2E infrastructure
run: |
aws cloudformation deploy \
--template-file filesystem-infrastructure-template.yaml \
--stack-name ${{ env.FILESYSTEM_INFRASTRUCTURE_STACK_NAME }} \
--no-fail-on-empty-changeset \
--tags Purpose=JavaSDKFileSystemSerDesE2E
working-directory: ./examples

e2e-tests:
needs: filesystem-infrastructure
env:
AWS_REGION: us-west-2
E2E_TEST_PARALLELISM: 4
runs-on: ubuntu-latest
strategy:
Expand Down Expand Up @@ -71,13 +105,24 @@ jobs:
- name: Generate SAM template
run: python3 generate-template.py
working-directory: ./examples
- name: Generate filesystem SerDes E2E SAM template
run: python3 generate-template.py --file-system-only --output filesystem-template.yaml
working-directory: ./examples
- name: sam build
env:
MAVEN_OPTS: -DskipTests=true -Dmaven.test.skip=true
run: | # add --no-cached if debugging sam build
sam build --debug --parameter-overrides \
'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }} ParameterKey=FunctionNamePrefix,ParameterValue=Java${{ matrix.java }}- ParameterKey=RoleArn,ParameterValue=${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }}'
working-directory: ./examples
- name: sam build filesystem SerDes E2E stack
env:
MAVEN_OPTS: -DskipTests=true -Dmaven.test.skip=true
run: |
sam build --debug --template-file filesystem-template.yaml --build-dir .aws-sam-filesystem \
--parameter-overrides \
'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }} ParameterKey=FunctionNamePrefix,ParameterValue=Java${{ matrix.java }}- ParameterKey=RoleArn,ParameterValue=${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }} ParameterKey=FileSystemInfrastructureStackName,ParameterValue=${{ env.FILESYSTEM_INFRASTRUCTURE_STACK_NAME }}'
working-directory: ./examples
- name: Clean up unmanaged Lambda log groups
run: |
# TODO: Remove this one-time migration cleanup after existing e2e stacks adopt managed log groups.
Expand All @@ -89,10 +134,18 @@ jobs:
--resolve-image-repos --resolve-s3 --parameter-overrides \
'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }} ParameterKey=FunctionNamePrefix,ParameterValue=Java${{ matrix.java }}- ParameterKey=RoleArn,ParameterValue=${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }}'
working-directory: ./examples
- name: sam deploy filesystem SerDes E2E stack
run: |
sam deploy --template-file .aws-sam-filesystem/template.yaml \
--stack-name Java${{ matrix.java }}-JavaSDKFileSystemSerDesE2EStack \
--resolve-s3 --parameter-overrides \
'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }} ParameterKey=FunctionNamePrefix,ParameterValue=Java${{ matrix.java }}- ParameterKey=RoleArn,ParameterValue=${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }} ParameterKey=FileSystemInfrastructureStackName,ParameterValue=${{ env.FILESYSTEM_INFRASTRUCTURE_STACK_NAME }}'
working-directory: ./examples
- name: Cloud Based Integration Tests
run: |
mvn clean test -B \
-Dtest.cloud.enabled=true \
-Dtest.filesystem.enabled=true \
-Dtest.aws.account='${{ secrets.TEST_ACCOUNT_ID }}' \
-Dtest=CloudBasedIntegrationTest \
-Dtest.function.name.prefix='Java${{ matrix.java }}-' \
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ __pycache__/
# SAM
.aws-sam/
examples/template.yaml
examples/filesystem-template.yaml
samconfig.toml
samconfig.toml.bak

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ See [Deploy Lambda durable functions with Infrastructure as Code](https://docs.a
**Advanced Topics**

- [<u>Configuration</u>](docs/advanced/configuration.md) - Customize SDK behaviour
- [<u>Serialization and SerDes Pipelines</u>](docs/advanced/serdes.md) - Configure value codecs, processing pipelines, and filesystem storage
- [<u>Error Handling</u>](docs/advanced/error-handling.md) - SDK exceptions for handling failures
- [<u>Logging</u>](docs/advanced/logging.md) - How to use DurableLogger
- [<u>Migrating from 1.x to 2.x</u>](docs/migration-1.x-to-2.x.md) - Upgrade guide for breaking changes since `v1.2.1`
Expand Down
4 changes: 2 additions & 2 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ The publication workflow:

1. Verifies that the tag is a semantic version, points to a commit on the
default branch, and matches the Maven version in the tagged POM.
2. Builds, signs, and uploads the SDK, testing library, and OpenTelemetry plugin
to Sonatype Central Portal.
2. Builds, signs, and uploads the SDK, testing library, and OpenTelemetry
plugin to Sonatype Central Portal.
3. Uploads the three JARs to the existing GitHub release.
4. Opens a pull request for the next development version. A final release
increments the patch version, so `2.1.1` produces `2.1.2-SNAPSHOT`. A
Expand Down
Loading
Loading