Skip to content

Set isOrchestration on sync and async single-instance purge requests #276

Description

@andystaples

Bug

Both TaskHubGrpcClient.purge_orchestration and AsyncTaskHubGrpcClient.purge_orchestration construct PurgeInstancesRequest(instanceId=..., recursive=...) without isOrchestration=True.

The protobuf flag distinguishes orchestration versus entity single-instance purge requests. Its omitted boolean value is false.

Confirmed by capturing requests from both public client methods at commit ec9af14. Equivalent Go fix: microsoft/durabletask-go#165.

Actual and expected

Actual: both single-instance purge requests have isOrchestration=False.

Expected: orchestration purge requests explicitly carry isOrchestration=True in both sync and async paths.

This is a confirmed wire-request defect, not evidence that every service rejects the request or fails deletion. The Go investigation found an emulator accepted the old request.

Relevant code and scope

durabletask/client.py lines 859–863 and 1404–1408 at the investigated revision. Azure Managed clients and Azure Functions clients inherit these APIs; the Functions purge_instance_history compatibility alias delegates to the inherited async API.

Preserve recursion defaults/overrides, response conversion, and error propagation. Add request-level regression coverage for sync and async methods and appropriate provider compatibility coverage. Do not change polling/completion semantics, package versions, or dependency minimums.

Document user-visible correction in the applicable Unreleased changelogs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions