This PR caches TokenCredential to resolve a memory issue that has been reported when managed identity is enabled. With these changes, we only create the TokenCredential object once instead of every time that GetStorageAccountDetails() is called. This also means that TokenRenewalState is also created once.
These changes were verified by enabling managed identity locally using these instructions and measuring the memory in VS with and without the changes in this PR.
Pull request checklist
[x] My changes do not require documentation changes
[ ] Otherwise: Documentation PR is ready to merge and referenced in pending_docs.md
[ ] My changes should not be added to the release notes for the next release
[ ] Otherwise: I've added my notes to release_notes.md
[x] My changes do not need to be backported to a previous version
[ ] Otherwise: Backport tracked by issue/PR #issue_or_pr
[ ] I have added all required tests (Unit tests, E2E tests)
[x] My changes do not require any extra work to be leveraged by OutOfProc SDKs
[ ] Otherwise: That work is being tracked here: #issue_or_pr_in_each_sdk
[x] My changes do not change the version of the WebJobs.Extensions.DurableTask package
[ ] Otherwise: major or minor version updates are reflected in /src/Worker.Extensions.DurableTask/AssemblyInfo.cs
[x] My changes do not add EventIds to our EventSource logs
[ ] Otherwise: Ensure the EventIds are within the supported range in our existing Windows infrastructure. You may validate this with a deployed app's telemetry. You may also extend the range by completing a PR such as this one.
[ ] My changes should be added to v3.x branch.
[x] Otherwise: This change only applies to Durable Functions v2.x and will not be merged to branch v3.x.
This PR caches
TokenCredential
to resolve a memory issue that has been reported when managed identity is enabled. With these changes, we only create theTokenCredential
object once instead of every time thatGetStorageAccountDetails()
is called. This also means thatTokenRenewalState
is also created once.These changes were verified by enabling managed identity locally using these instructions and measuring the memory in VS with and without the changes in this PR.
Pull request checklist
pending_docs.md
release_notes.md
/src/Worker.Extensions.DurableTask/AssemblyInfo.cs