Skip to content

Commit dcd243b

Browse files
authored
v1.10.0 Release (#302)
1 parent d040b7c commit dcd243b

13 files changed

Lines changed: 105 additions & 23 deletions

File tree

‎.github/workflows/build-validation.yml‎

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,14 @@ jobs:
142142
name: Integration test report
143143
path: client/build/reports/tests/integrationTest
144144

145+
- name: Archive large payload integration test report
146+
if: always()
147+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
148+
with:
149+
name: Large payload integration test report
150+
path: azure-blob-payloads/build/reports/tests/integrationTest
151+
if-no-files-found: ignore
152+
145153
- name: Archive export history integration test report
146154
if: always()
147155
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
@@ -150,11 +158,19 @@ jobs:
150158
path: exporthistory/build/reports/tests/integrationTest
151159
if-no-files-found: ignore
152160

161+
- name: Assemble packages for upload
162+
run: ./gradlew assemble
163+
153164
- name: Upload JAR output
154165
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
155166
with:
156-
name: Package
157-
path: client/build/libs
167+
name: Packages
168+
path: |
169+
client/build/libs
170+
azurefunctions/build/libs
171+
azuremanaged/build/libs
172+
azure-blob-payloads/build/libs
173+
exporthistory/build/libs
158174
159175
- name: Fail the job if tests failed
160176
if: env.TEST_FAILED == 'true'

‎CHANGELOG.md‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
## Unreleased
2+
3+
## v1.10.0
4+
* Enable custom exception providers for Durable Functions Java activities ([#294](https://github.com/microsoft/durabletask-java/pull/294))
25
* Recover verified ambiguous payload uploads on HTTP 409 `BlobAlreadyExists` as well as HTTP 412, while rejecting unrelated conflicts.
36
* Change the default large-payload externalization threshold from 900,000 bytes to 256 KiB, matching .NET.
47
* Align the large-payload worker estimator threshold with the 256 KiB storage default, resolve externalized entity-operation failure traces, recover verified ambiguous blob uploads, and recognize `$root` payload tokens.
@@ -14,8 +17,10 @@
1417
* Add optional connection-string `AuthorityHost` forwarding for Azure Identity credentials that support it. Audience selection does not change the service endpoint or credential authority; managed identity and developer-tool cloud configuration remain separate.
1518
* Add the `exporthistory` module for durable, checkpointed export of terminal orchestration history to Azure Blob Storage ([#293](https://github.com/microsoft/durabletask-java/pull/293))
1619
* Add client APIs to list terminal instance IDs by completion time (`listInstanceIds`) and read orchestration history (`getOrchestrationHistory`) ([#292](https://github.com/microsoft/durabletask-java/pull/292))
17-
* Add `createReplaySafeLogger` to suppress orchestration log output during replay ([#295](https://github.com/microsoft/durabletask-java/pull/295)).
20+
* Add `createReplaySafeLogger` to suppress orchestration log output during replay ([#295](https://github.com/microsoft/durabletask-java/pull/295))
1821
* Add `getParentInstance()` API to `TaskOrchestrationContext` for discovering parent orchestration info ([#284](https://github.com/microsoft/durabletask-java/pull/284))
22+
* Add the `azure-blob-payloads` module for externalizing large orchestration payloads to Azure Blob Storage ([#280](https://github.com/microsoft/durabletask-java/pull/280))
23+
* Add inner failure details and custom exception properties to `FailureDetails` ([#263](https://github.com/microsoft/durabletask-java/pull/263))
1924

2025
## v1.9.0
2126
* Fix entity locking deserialization and add Jackson support for EntityInstanceId/EntityMetadata ([#281](https://github.com/microsoft/durabletask-java/pull/281))

‎README.md‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ Logger logger = ctx.createReplaySafeLogger(executionContext.getLogger());
4040
Replay-safe logging suppresses calls made while replaying; it does not guarantee
4141
exactly-once log delivery across failed or retried live orchestration turns.
4242

43+
### Externalized large payloads
44+
45+
The [`durabletask-azure-blob-payloads`](azure-blob-payloads/README.md) module transparently stores orchestration payloads that exceed a configurable threshold in Azure Blob Storage. Configure the same storage container on the client and worker to exchange large inputs, outputs, activity payloads, and orchestration actions without exceeding gRPC message limits.
46+
4347
### Reliable fan-out / fan-in orchestration pattern
4448

4549
```java
@@ -102,8 +106,11 @@ The following packages are produced from this repo.
102106

103107
| Package | Latest version |
104108
| - | - |
105-
| Durable Task - Client | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-client?label=durabletask-client)](https://mvnrepository.com/artifact/com.microsoft/durabletask-client/1.0.0) |
106-
| Durable Task - Azure Functions | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-azure-functions?label=durabletask-azure-functions)](https://mvnrepository.com/artifact/com.microsoft/durabletask-azure-functions/1.0.1) |
109+
| Durable Task - Client | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-client?label=durabletask-client)](https://mvnrepository.com/artifact/com.microsoft/durabletask-client) |
110+
| Durable Task - Azure Functions | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-azure-functions?label=durabletask-azure-functions)](https://mvnrepository.com/artifact/com.microsoft/durabletask-azure-functions) |
111+
| Durable Task - Azure Managed | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-azuremanaged?label=durabletask-azuremanaged)](https://mvnrepository.com/artifact/com.microsoft/durabletask-azuremanaged) |
112+
| [Durable Task - Azure Blob Payloads](azure-blob-payloads/README.md) | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-azure-blob-payloads?label=durabletask-azure-blob-payloads)](https://mvnrepository.com/artifact/com.microsoft/durabletask-azure-blob-payloads) |
113+
| [Durable Task - Export History](exporthistory/README.md) | [![Maven Central](https://img.shields.io/maven-central/v/com.microsoft/durabletask-exporthistory?label=durabletask-exporthistory)](https://mvnrepository.com/artifact/com.microsoft/durabletask-exporthistory) |
107114

108115
## Azure Durable Task Scheduler authentication
109116

‎azdevops-pipeline/build-release-artifacts.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ steps:
2525
publishJUnitResults: false
2626
tasks: clean assemble
2727
options: '--init-script init.gradle'
28-
displayName: Assemble durabletask-client and durabletask-azure-functions
28+
displayName: Assemble all publishable Durable Task Java packages
2929

3030
# the secring.gpg file is required to sign the artifacts, it's generated from GnuPG, and it's stored in the library of the durabletaskframework ADO
3131
- task: DownloadSecureFile@1
@@ -44,7 +44,7 @@ steps:
4444
jdkArchitectureOption: 'x64'
4545
tasks: publish
4646
options: '--init-script init.gradle -Psigning.keyId=$(gpgSignKey) -Psigning.password=$(gpgSignPassword) -Psigning.secretKeyRingFile=$(gpgSecretFile.secureFilePath)'
47-
displayName: Publish durabletask-client and durabletask-azure-functions
47+
displayName: Stage all publishable Durable Task Java packages
4848

4949
- task: CopyFiles@2
5050
displayName: 'Copy publish file to Artifact Staging Directory'

‎azure-blob-payloads/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The `durabletask-azure-blob-payloads` module transparently externalizes large Du
77
Add the module alongside the Durable Task client and your backend-specific extension:
88

99
```groovy
10-
implementation 'com.microsoft:durabletask-azure-blob-payloads:1.0.0'
10+
implementation 'com.microsoft:durabletask-azure-blob-payloads:1.10.0'
1111
```
1212

1313
The module includes Azure Blob Storage support. Applications that use managed identity should also add `com.azure:azure-identity`.

‎azure-blob-payloads/build.gradle‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group 'com.microsoft'
9-
version = '1.0.0'
9+
version = '1.10.0'
1010
archivesBaseName = 'durabletask-azure-blob-payloads'
1111

1212
def grpcVersion = '1.78.0'

‎azurefunctions/build.gradle‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group 'com.microsoft'
9-
version = '1.9.0'
9+
version = '1.10.0'
1010
archivesBaseName = 'durabletask-azure-functions'
1111

1212
def protocVersion = '3.25.8'

‎azuremanaged/build.gradle‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ plugins {
1717

1818
archivesBaseName = 'durabletask-azuremanaged'
1919
group 'com.microsoft'
20-
version = '1.9.0'
20+
version = '1.10.0'
2121

2222
def grpcVersion = '1.78.0'
2323
def azureCoreVersion = '1.57.1'

‎client/build.gradle‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ plugins {
1010
}
1111

1212
group 'com.microsoft'
13-
version = '1.9.0'
13+
version = '1.10.0'
1414
archivesBaseName = 'durabletask-client'
1515

1616
def grpcVersion = '1.78.0'

‎eng/ci/release.yml‎

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ extends:
2323
stages:
2424
- stage: release
2525
jobs:
26-
- job: durabletask_azuremanaged
26+
- job: durabletask_client
2727
templateContext:
2828
type: releaseJob
2929
isProduction: true
@@ -36,19 +36,20 @@ extends:
3636

3737
steps:
3838
- task: SFP.release-tasks.custom-build-release-task.EsrpRelease@9
39-
displayName: 'Release durabletask-azuremanaged'
39+
displayName: 'Release durabletask-client'
4040
inputs:
4141
connectedservicename: 'dtfx-internal-esrp-prod'
4242
usemanagedidentity: true
4343
keyvaultname: 'durable-esrp-akv'
4444
signcertname: 'dts-esrp-cert'
4545
clientid: '0b3ed1a4-0727-4a50-b82a-02c2bd9dec89'
46-
folderlocation: '$(System.DefaultWorkingDirectory)/drop/durabletask-azuremanaged'
46+
folderlocation: '$(System.DefaultWorkingDirectory)/drop/durabletask-client'
4747
owners: 'wangbill@microsoft.com'
4848
approvers: 'kaibocai@microsoft.com'
4949
mainpublisher: 'durabletask-java'
5050

51-
- job: durabletask_client
51+
- job: durabletask_azuremanaged
52+
dependsOn: durabletask_client
5253
templateContext:
5354
type: releaseJob
5455
isProduction: true
@@ -61,19 +62,20 @@ extends:
6162

6263
steps:
6364
- task: SFP.release-tasks.custom-build-release-task.EsrpRelease@9
64-
displayName: 'Release durabletask-client'
65+
displayName: 'Release durabletask-azuremanaged'
6566
inputs:
6667
connectedservicename: 'dtfx-internal-esrp-prod'
6768
usemanagedidentity: true
6869
keyvaultname: 'durable-esrp-akv'
6970
signcertname: 'dts-esrp-cert'
7071
clientid: '0b3ed1a4-0727-4a50-b82a-02c2bd9dec89'
71-
folderlocation: '$(System.DefaultWorkingDirectory)/drop/durabletask-client'
72+
folderlocation: '$(System.DefaultWorkingDirectory)/drop/durabletask-azuremanaged'
7273
owners: 'wangbill@microsoft.com'
7374
approvers: 'kaibocai@microsoft.com'
7475
mainpublisher: 'durabletask-java'
7576

7677
- job: durabletask_azure_functions
78+
dependsOn: durabletask_client
7779
templateContext:
7880
type: releaseJob
7981
isProduction: true
@@ -97,3 +99,55 @@ extends:
9799
owners: 'wangbill@microsoft.com'
98100
approvers: 'kaibocai@microsoft.com'
99101
mainpublisher: 'durabletask-java'
102+
103+
- job: durabletask_azure_blob_payloads
104+
dependsOn: durabletask_client
105+
templateContext:
106+
type: releaseJob
107+
isProduction: true
108+
inputs:
109+
# Declare inputs to be released here to ensure they receive relevant checks
110+
- input: pipelineArtifact
111+
pipeline: DurableTaskJavaBuildPipeline
112+
artifactName: drop
113+
targetPath: $(System.DefaultWorkingDirectory)/drop
114+
115+
steps:
116+
- task: SFP.release-tasks.custom-build-release-task.EsrpRelease@9
117+
displayName: 'Release durabletask-azure-blob-payloads'
118+
inputs:
119+
connectedservicename: 'dtfx-internal-esrp-prod'
120+
usemanagedidentity: true
121+
keyvaultname: 'durable-esrp-akv'
122+
signcertname: 'dts-esrp-cert'
123+
clientid: '0b3ed1a4-0727-4a50-b82a-02c2bd9dec89'
124+
folderlocation: '$(System.DefaultWorkingDirectory)/drop/durabletask-azure-blob-payloads'
125+
owners: 'wangbill@microsoft.com'
126+
approvers: 'kaibocai@microsoft.com'
127+
mainpublisher: 'durabletask-java'
128+
129+
- job: durabletask_exporthistory
130+
dependsOn: durabletask_client
131+
templateContext:
132+
type: releaseJob
133+
isProduction: true
134+
inputs:
135+
# Declare inputs to be released here to ensure they receive relevant checks
136+
- input: pipelineArtifact
137+
pipeline: DurableTaskJavaBuildPipeline
138+
artifactName: drop
139+
targetPath: $(System.DefaultWorkingDirectory)/drop
140+
141+
steps:
142+
- task: SFP.release-tasks.custom-build-release-task.EsrpRelease@9
143+
displayName: 'Release durabletask-exporthistory'
144+
inputs:
145+
connectedservicename: 'dtfx-internal-esrp-prod'
146+
usemanagedidentity: true
147+
keyvaultname: 'durable-esrp-akv'
148+
signcertname: 'dts-esrp-cert'
149+
clientid: '0b3ed1a4-0727-4a50-b82a-02c2bd9dec89'
150+
folderlocation: '$(System.DefaultWorkingDirectory)/drop/durabletask-exporthistory'
151+
owners: 'wangbill@microsoft.com'
152+
approvers: 'kaibocai@microsoft.com'
153+
mainpublisher: 'durabletask-java'

0 commit comments

Comments
 (0)