microsoft / microsoft/durabletask-dotnet

Listing instances with DurableTaskClient.GetAllInstancesAsync() is more than twice as slower than with IDurableOrchestrationClient.ListInstancesAsync()

Open
#271 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

P3 Performance
Dominant language
C#
Stars
193
Forks
60
Avg merge
3d 12h
Merged PRs (30d)
4

Description

DfMon InProc can fetch and show ~23K instances in ~90 s:

image

image

In Isolated mode the same process takes ~200 s:

image

Same default Storage Durability provider used in both cases, same data is read. DfMon was run locally, on my devbox.

Code that fetches instances in Isolated mode is here.

Would appreciate any pointers on how this can be improved.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the isolated-mode fetch code in durablefunctionsmonitor.dotnetisolated.core/Functions/Orchestrations.cs at the linked line, then compare GetAllInstancesAsync() with the faster ListInstancesAsync() path. Reproduce the comparison using the same storage provider and roughly 23K instances. Done means identifying the cause of the performance gap and improving the isolated-mode retrieval time.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
backend, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.