Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
17ba43b
docs: design custom extension operations API
zhongkechen Aug 10, 2026
3cb3728
docs: split extension operation facades
zhongkechen Aug 10, 2026
8c4b3ee
docs: define TLS-only extension callbacks
zhongkechen Aug 10, 2026
0aaaace
docs: add custom extension operations ADR
zhongkechen Aug 10, 2026
c03d6dd
docs: plan custom extension operations implementation
zhongkechen Aug 10, 2026
6905f4b
feat: add extension operation reservations
zhongkechen Aug 10, 2026
59eb34d
feat: add static durable operation facades
zhongkechen Aug 10, 2026
96eab15
feat: expose durable future completion signals
zhongkechen Aug 10, 2026
d3c7749
test: verify extensions across module boundary
zhongkechen Aug 10, 2026
781655b
docs: publish custom extension operations guide
zhongkechen Aug 10, 2026
44dd8ac
docs: design built-in extension migration
zhongkechen Aug 10, 2026
b1ff167
docs: amend custom extension operations ADR
zhongkechen Aug 10, 2026
f543e8a
docs: plan built-in extension migration
zhongkechen Aug 10, 2026
ef2ce97
feat: add custom extension operation ids
zhongkechen Aug 10, 2026
5a2b5e7
feat: support custom extension subtypes
zhongkechen Aug 10, 2026
783dcf0
feat: add stateful extension steps
zhongkechen Aug 10, 2026
3f638b3
feat: add configurable extension contexts
zhongkechen Aug 10, 2026
2546635
feat: organize extension APIs and migrate callbacks
zhongkechen Aug 10, 2026
b5590fa
refactor: implement retry and condition as extensions
zhongkechen Aug 10, 2026
f126e4c
feat: add extension concurrency coordination
zhongkechen Aug 10, 2026
ca88c93
refactor: implement map as an extension
zhongkechen Aug 10, 2026
109c0ca
refactor: implement parallel as an extension
zhongkechen Aug 10, 2026
000e290
refactor: unify durable operation extension architecture
zhongkechen Aug 10, 2026
c362182
fix: preserve parallel branch config compatibility
zhongkechen Aug 10, 2026
1405714
test: isolate stateful step replay cases
zhongkechen Aug 10, 2026
085bd6c
refactor: nest operation context types
zhongkechen Aug 10, 2026
4801210
refactor: simplify extension operation internals
zhongkechen Aug 10, 2026
4583bd5
refactor: consolidate concurrent operation internals
zhongkechen Aug 10, 2026
b986357
refactor: decouple extension step configuration
zhongkechen Aug 10, 2026
d265b80
refactor: unify extension step retry outcomes
zhongkechen Aug 10, 2026
954ed31
refactor: delegate child context failure translation
zhongkechen Aug 10, 2026
8093c6a
refactor: adapt durable step facade in context
zhongkechen Aug 10, 2026
5a8491c
refactor: remove parallel supplier overloads
zhongkechen Aug 10, 2026
5d8fbe0
feat: add operation-based example suite
zhongkechen Aug 10, 2026
461f646
fix: preserve extension operation compatibility
zhongkechen Aug 10, 2026
e8b929f
Add static durable logger accessors
zhongkechen Aug 10, 2026
370eba1
Fix extension replay validation and retry polling
zhongkechen Aug 11, 2026
39b1381
refactor: mark primitive implementations internal
zhongkechen Aug 11, 2026
fecceb3
Fix map replay reservation ordering
zhongkechen Aug 11, 2026
6d2ff84
Fix awaitFuture suspension race
zhongkechen Aug 12, 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
28 changes: 28 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,34 @@ jobs:
with:
path: github-pages

operation-examples:
name: Operation examples (Java ${{ matrix.java }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java:
- 17
- 21
- 25
steps:
- name: Checkout repository
uses: actions/checkout@v7

- name: Setup Java ${{ matrix.java }}
uses: actions/setup-java@v5
with:
distribution: corretto
java-version: ${{ matrix.java }}
cache: maven

- name: Test operation examples
run: >-
mvn -B -pl examples -am
-Dtest='software.amazon.lambda.durable.examples.operation.**.*Test'
-Dsurefire.failIfNoSpecifiedTests=false
test

deploy-pages:
if: ${{ github.event_name == 'milestone' || github.ref == 'refs/heads/main' }}
needs: build
Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,78 @@ jobs:
JAVA_VERSION: ${{ matrix.java }}
run: python3 ../.github/scripts/publish_e2e_test_summary.py
working-directory: ./examples

operation-e2e-tests:
name: Operation examples E2E (Java ${{ matrix.java }})
env:
AWS_REGION: us-west-2
E2E_TEST_PARALLELISM: 4
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
java:
- 17
- 21
- 25
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Setup AWS SAM CLI
uses: aws-actions/setup-sam@v3
with:
use-installer: true
- 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-operation-test
aws-region: ${{ env.AWS_REGION }}
allowed-account-ids: ${{ secrets.TEST_ACCOUNT_ID }}
- name: Setup Java ${{ matrix.java }}
uses: actions/setup-java@v5
with:
distribution: corretto
java-version: ${{ matrix.java }}
cache: maven
- name: Build locally
run: mvn -B -q -Dmaven.test.skip=true install --file pom.xml
- name: Generate operation SAM template
run: python3 generate-template.py --suite operation
working-directory: ./examples
- name: sam build
env:
MAVEN_OPTS: -DskipTests=true -Dmaven.test.skip=true
run: |
sam build --debug --parameter-overrides \
'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }} ParameterKey=FunctionNamePrefix,ParameterValue=Java${{ matrix.java }}-Operation- ParameterKey=RoleArn,ParameterValue=${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }}'
working-directory: ./examples
- name: Clean up unmanaged Lambda log groups
run: |
.github/scripts/cleanup_e2e_unmanaged_log_groups.sh --execute \
--stack-name Java${{ matrix.java }}-JavaSDKOperationCloudBasedIntegrationTestStack
- name: sam deploy
run: |
sam deploy --stack-name Java${{ matrix.java }}-JavaSDKOperationCloudBasedIntegrationTestStack \
--resolve-image-repos --resolve-s3 --parameter-overrides \
'ParameterKey=Architecture,ParameterValue=x86_64 ParameterKey=JavaVersion,ParameterValue=java${{ matrix.java }} ParameterKey=FunctionNamePrefix,ParameterValue=Java${{ matrix.java }}-Operation- ParameterKey=RoleArn,ParameterValue=${{ secrets.TEST_LAMBDA_EXECUTION_ROLE_ARN }}'
working-directory: ./examples
- name: Cloud Based Integration Tests
run: |
mvn clean test -B \
-Dtest.cloud.enabled=true \
-Dtest.aws.account='${{ secrets.TEST_ACCOUNT_ID }}' \
-Dtest="CloudBasedIntegrationTest,CloudBasedOtelIntegrationTest" \
-Dtest.function.name.prefix='Java${{ matrix.java }}-Operation-' \
-Djunit.jupiter.execution.parallel.enabled=true \
-Djunit.jupiter.execution.parallel.mode.default=concurrent \
-Djunit.jupiter.execution.parallel.mode.classes.default=concurrent \
-Djunit.jupiter.execution.parallel.config.strategy=fixed \
-Djunit.jupiter.execution.parallel.config.fixed.parallelism=${{ env.E2E_TEST_PARALLELISM }}
working-directory: ./examples
- name: Publish test case summary
if: always()
env:
JAVA_VERSION: ${{ matrix.java }} Operation Examples
run: python3 ../.github/scripts/publish_e2e_test_summary.py
working-directory: ./examples
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
- [<u>Configuration</u>](docs/advanced/configuration.md) - Customize SDK behaviour
- [<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>Custom Extensions</u>](docs/advanced/extensions.md) - Build reusable operations from supported primitives
- [<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`
- [<u>Release Process</u>](RELEASE.md) - Prepare and publish Maven releases
- [<u>Testing</u>](docs/advanced/testing.md) - Utilities for local development and cloud-based integration testing
Expand Down
Loading
Loading