You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,10 +10,26 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
10
10
ADDED
11
11
12
12
- Added `FailureDetails.is_caused_by()` to check whether a task failure was caused by a given exception type, mirroring .NET's `TaskFailureDetails.IsCausedBy<T>()` and Java's `FailureDetails.isCausedBy()`. Passing an exception type performs a base-type-aware match (a failure caused by a subclass matches its base type) against exception classes already imported in the process; passing a string matches by qualified or unqualified name.
13
+
- Added a per-invocation dependency-resolution API to `durabletask.extensions.history_export` so any hosting model can supply the export client and writer without a process-global. The export activities now resolve their `HistoryExportContext` from a resolver invoked once per activity execution; new public building blocks are the `HistoryExportContextResolver` type, the pure activity bodies `run_list_terminal_instances(context, input)` and `run_export_instance_history(context, input)`, and the `build_activities(resolver)` factory. This lets host-driven, multi-process models (such as Azure Functions, where the process that starts an export job is not the worker that runs an export activity) inject dependencies lazily per invocation.
13
14
14
15
CHANGED
15
16
17
+
- Importing `durabletask` no longer eagerly imports the worker implementation and its
18
+
dependencies (gRPC, protobuf, entities, serialization, OpenTelemetry). The public names
19
+
re-exported from the package — `ActivityWorkItemFilter`, `ConcurrencyOptions`,
`VersioningOptions`, and `WorkItemFilters` — are now resolved on first use, so
23
+
`import durabletask` is substantially faster and loads far fewer modules. This
24
+
measurably reduces cold-start time for client-only applications, including those using
25
+
`durabletask.azuremanaged`, which shares the same `durabletask` namespace. All existing
26
+
import paths, `__all__`, `dir()`, and star-imports behave exactly as before.
16
27
-**Breaking:**`FailureDetails.error_type` — and the `errorType` value sent over the wire — is now the fully-qualified type name (`module.ClassName`, e.g. `builtins.ValueError`, `durabletask.task.TaskFailedError`) instead of the bare class name, matching the .NET and Java SDKs. Code that compared `error_type` against a bare name (for example `== "ValueError"`) must be updated to the qualified name or, preferably, switched to `FailureDetails.is_caused_by()`. Because this value is persisted and crosses the orchestration boundary, failures produced by older workers may still carry a bare name; `is_caused_by()` accepts both.
28
+
-**Breaking:** Retired the process-global history-export context. `durabletask.extensions.history_export.bind_context()` and `clear_context()` have been removed; the export activities now resolve their `HistoryExportContext` per invocation via a resolver captured at registration. `ExportHistoryClient.register_worker()` continues to wire this up automatically, so most callers are unaffected. Code that called `bind_context(HistoryExportContext(client, writer))` directly should instead register the activities with `durabletask.extensions.history_export.activities.register(worker, lambda: HistoryExportContext(client, writer))` (or a lazier resolver), or use `ExportHistoryClient.register_worker()`.
29
+
30
+
FIXED
31
+
32
+
- Fixed the worker allocating one `asyncio` task per queued work item before applying the concurrency limit, which made memory use and event-loop scheduling overhead grow with the queue backlog during bursts. In-flight work item tasks are now bounded by the configured `ConcurrencyOptions` limits.
Copy file name to clipboardExpand all lines: durabletask-azuremanaged/CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,10 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
13
13
result, credential failures (for example an unavailable managed identity or a misconfigured
14
14
`DefaultAzureCredential`) now surface from the first request rather than from the constructor.
15
15
The exception type and message are unchanged; only the timing differs.
16
+
- Importing `durabletask.azuremanaged.preview.sandboxes` no longer loads the sandbox worker
17
+
runtime or `azure-identity` up front. The package's public names are now resolved on first
18
+
use, which roughly halves import cost for callers that only declare sandbox worker profiles
19
+
or use the sandbox client. Exported names, `__all__`, and import paths are unchanged.
16
20
-`FailureDetails.error_type` now carries the fully-qualified type name (e.g. `durabletask.task.TaskFailedError`) instead of the bare class name, and the new `FailureDetails.is_caused_by()` helper is available (both inherited from durabletask). See the core `durabletask` changelog for details, including the breaking-change notes.
0 commit comments