Skip to content

Latest commit

 

History

History
125 lines (96 loc) · 11.3 KB

CHANGELOG.md

File metadata and controls

125 lines (96 loc) · 11.3 KB

Unreleased

  • Write self-describing v2 blob payload tokens by default while retaining v1 and v2 reads from the configured storage endpoint and container. Require complete token formats for direct downloads and account for URL token length in worker action-size estimates. Upgrade readers before deploying v2 writers; changing storage locations requires explicit migration or a store configured for the original location.
  • Add explicit primary-account-wide and additional-account read scopes for Azure Blob payloads while retaining configured-container access by default. Additional accounts require identity authentication and exact HTTPS account service endpoints. Preserve named and nested v1/v2 references and ignore legacy v2 URL query and fragment suffixes.

v1.10.0

  • Enable custom exception providers for Durable Functions Java activities (#294)
  • Recover verified ambiguous payload uploads on HTTP 409 BlobAlreadyExists as well as HTTP 412, while rejecting unrelated conflicts.
  • Change the default large-payload externalization threshold from 900,000 bytes to 256 KiB, matching .NET.
  • 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.
  • Preserve transient verification-download failures during ambiguous blob-upload recovery instead of reporting the original permanent precondition failure.
  • Propagate transient large-payload upload failures without completing work items; abandon failed activity and orchestration completions for scheduler redelivery instead of terminating the worker polling thread.
  • Ensure the export container exists before every upload, allowing export retries to recover containers deleted between uploads.
  • Preserve custom and empty property objects in exported failure details, including nested failures, matching .NET's history conversion.
  • Capture the default continuous-export completion-time lower bound when creation options are constructed, matching .NET and preserving the window through worker queue delays.
  • Recreate a deleted large-payload container and retry the upload once, without allowing stale concurrent failures to invalidate a newly recreated container.
  • Preserve backend timestamp precision in orchestration history and client metadata, including export blob names, while retaining existing orchestration replay timestamp behavior.
  • Export entity operations and locks using the .NET-compatible EventSent/EventRaised message representation instead of Java-native entity event objects, preserving missing stack traces in failure details.
  • Add normalized token audience configuration through Azure Managed client/worker options, convenience overloads, and connection-string ResourceId. Missing or empty audiences now default to https://durabletask.azure.us when REGION_NAME starts with usgov or usdod (case-insensitively), otherwise https://durabletask.io. Explicit audiences override this default; surrounding Unicode whitespace is trimmed, and whitespace-only or otherwise empty normalized values are rejected.
  • 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.
  • Add the exporthistory module for durable, checkpointed export of terminal orchestration history to Azure Blob Storage (#293)
  • Add client APIs to list terminal instance IDs by completion time (listInstanceIds) and read orchestration history (getOrchestrationHistory) (#292)
  • Add createReplaySafeLogger to suppress orchestration log output during replay (#295)
  • Add getParentInstance() API to TaskOrchestrationContext for discovering parent orchestration info (#284)
  • Add the azure-blob-payloads module for externalizing large orchestration payloads to Azure Blob Storage (#280)
  • Add inner failure details and custom exception properties to FailureDetails (#263)

v1.9.0

  • Fix entity locking deserialization and add Jackson support for EntityInstanceId/EntityMetadata (#281)
  • Durable Entities (#268)
  • Add work item filtering support for DurableTaskGrpcWorker to enable worker-side filtering of orchestration and activity work items (#275)
  • Add support for calls to HTTP endpoints (#271)
  • Add getSuspendPostUri and getResumePostUri getters to HttpManagementPayload (#264)

v1.8.0

  • Adding rewind client API (#253). Note: orchestration processing for rewind is supported with Azure Functions but not with the standalone GrpcDurableTaskWorker.
  • Add permissions to build-validation workflow (#265)
  • Add distributed tracing (OpenTelemetry) support with W3C Trace Context propagation (#266)
  • Add GitHub Copilot agents for automated PR verification, daily code review, and issue triage (#269)

v1.7.0

  • Add descriptive error when orchestration type is not registered (#261)
  • Update all dependencies to latest versions (#260)

v1.6.3

  • Add DurableTaskGrpcClientFactory (#256)
  • Add support for running GitHub workflows manually and update flaky tests (#258)

v1.6.2

  • Fixing gRPC channel shutdown (#249)

v1.6.1

  • Add support for default versions in Durable Function sub-orchestrations (#241)

v1.6.0

  • Add support for tags when creating new orchestrations (#231)
  • Add versioning support for client and worker (#224)
  • Add tracing support to send information to the WebJobs extension (#211)

v1.5.2

  • Add distributed tracing support for Azure Functions client scenarios (#211)

v1.5.1

  • Improve logging for unexpected connection failures in DurableTaskGrpcWorker (#216)
  • Add User-Agent Header to gRPC Metadata (#213)
  • Update protobuf definitions to include new properties in OrchestratorRequest and update source commit hash (#214)
  • DTS Support (#201)
  • Add automatic proto file download and commit hash tracking during build (#207)
  • Fix infinite loop when use continueasnew after wait external event (#183)
  • Fix the issue "Deserialize Exception got swallowed when use anyOf with external event." (#185)

v1.5.0

  • Fix exception type issue when using RetriableTask in fan in/out pattern (#174)
  • Add implementation to generate name-based deterministic UUID (#176)
  • Update dependencies to resolve CVEs (#177)

v1.4.0

Updates

  • Refactor createTimer to be non-blocking (#161)

v1.3.0

  • Refactor RetriableTask and add new CompoundTask, fixing Fan-out/Fan-in stuck when using RetriableTask (#157)

v1.2.0

Updates

  • Add thenAccept and thenApply to Task interface (#148)
  • Support Suspend and Resume Client APIs (#151)
  • Support restartInstance and pass restartPostUri in HttpManagementPayload (#108)
  • Improve TaskOrchestrationContext#continueAsNew method so it doesn't require return statement right after it anymore (#149)

v1.1.1

Updates

  • Fix exception occurring when invoking the TaskOrchestrationContext#continueAsNew method (#118)

v1.1.0

Updates

  • Fix the potential NPE issue of DurableTaskClient#terminate method (#104)
  • Add waitForCompletionOrCreateCheckStatusResponse client API (#115)
  • Support long timers by breaking up into smaller timers (#114)

v1.0.0

New

  • Add CHANGELOG.md file to track changes across versions
  • Added createHttpManagementPayload API (#63)

Updates

  • update DataConverterException with detail error message (#78)
  • update OrchestratorBlockedEvent and TaskFailedException to be unchecked exceptions (#88)
  • update dependency azure-functions-java-library to 2.2.0 - include azure-functions-java-spi as compileOnly dependency (#95)

Breaking changes

  • Use java worker middleware to avoid wrapper method when create orchestrator function (#87)
  • Fixed DurableClientContext.createCheckStatusResponse to return 202 (#92)
  • context.allOf() now throws CompositeTaskFailedException(RuntimeException) when one or more tasks fail (#54)
  • Updated DurableTaskClient.purgeInstances(...) to take a timeout parameter and throw TimeoutException (#37)
  • The waitForInstanceStart(...) and waitForInstanceCompletion(...) methods of the DurableTaskClient interface now throw a checked TimeoutException