Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add | Cache TokenCredential objects to take advantage of token caching #2380

Merged
merged 12 commits into from
Jun 12, 2024

Conversation

David-Engel
Copy link
Contributor

@David-Engel David-Engel commented Mar 2, 2024

By caching DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential, and WorkloadIdentityCredential objects, we can take advantage of token caching in the underlying Azure.Identity implementation.

This should particularly reduce token request rates in Managed Identity environments and eliminate or reduce instances of throttling from the managed identity token endpoint.

This would address #1495.

@David-Engel David-Engel marked this pull request as draft March 2, 2024 01:31
Copy link

codecov bot commented Mar 2, 2024

Codecov Report

Attention: Patch coverage is 77.31959% with 22 lines in your changes missing coverage. Please review.

Project coverage is 72.79%. Comparing base (f7ab115) to head (8315bf3).
Report is 4 commits behind head on main.

Current head 8315bf3 differs from pull request most recent head 54e8fae

Please upload reports for the commit 54e8fae to get more accurate results.

Files Patch % Lines
...SqlClient/ActiveDirectoryAuthenticationProvider.cs 77.31% 22 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2380      +/-   ##
==========================================
- Coverage   72.81%   72.79%   -0.03%     
==========================================
  Files         311      311              
  Lines       61694    61760      +66     
==========================================
+ Hits        44922    44956      +34     
- Misses      16772    16804      +32     
Flag Coverage Δ
addons 92.88% <ø> (ø)
netcore 77.12% <77.31%> (-0.06%) ⬇️
netfx 70.45% <77.31%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@JRahnama JRahnama added this to the 6.0-preview1 milestone Mar 2, 2024
Wait on the semaphore outside the try to ensure Release isn't called if the wait times out.

No need to serialize GetTokenAsync calls since Azure Identity already handles that in their implementation.
@David-Engel David-Engel changed the title WIP: Cache TokenCredential objects to take advantage of token caching Cache TokenCredential objects to take advantage of token caching May 24, 2024
@David-Engel David-Engel marked this pull request as ready for review May 24, 2024 18:44
@DavoudEshtehari DavoudEshtehari added the 💡 Enhancement New feature request label Jun 7, 2024
Co-authored-by: DavoudEshtehari <61173489+DavoudEshtehari@users.noreply.github.com>
@JRahnama
Copy link
Member

@David-Engel can you address the conflict that we can merge this please?

@JRahnama JRahnama changed the title Cache TokenCredential objects to take advantage of token caching Add | Cache TokenCredential objects to take advantage of token caching Jun 12, 2024
@JRahnama JRahnama merged commit 080e669 into dotnet:main Jun 12, 2024
146 of 148 checks passed
@David-Engel David-Engel deleted the tokenCache branch June 12, 2024 16:41
deepaksa1 added a commit to deepaksa1/SqlClient that referenced this pull request Jul 22, 2024
* Updating Azure.Identity version to 1.11.3 (dotnet#2526)

* Fix | Clone of SqlConnection should include AccessTokenCallback (dotnet#2525)

* Enhancement | Add trace logs for packet size (dotnet#2522)

* Merged PR 4583: eng | Fix policheck errors.

Fix policheck errors.

Sample pipeline run which did not have policheck errors:

https://sqlclientdrivers.visualstudio.com/ADO.Net/_build/results?buildId=88114&view=sariftools.scans.build-tab

Related work items: #30279

* Doc | Fix SNI dependencies of 5.1 and 5.2 release notes (dotnet#2537)

* Change | Separate tests for NetFx and NetCore - NetFx-Only Connection String Properties (dotnet#2466)

* Adding TransparentNetworkIpResolution to list of unsupported on platform connection string error messages
Splitting unit test for netfx-only connection string properties such that test does not fail on netcore

* Remove DeprecatedSynonymCount since referencing the unsupported array is not possible

* Fix | Enhance certificate validation (dotnet#2487)

* Hotfix v5.2.1 Release notes (dotnet#2534)

* Improve AccessTokenCallback sample code (dotnet#2543)

* Merged PR 4621: eng | Fix policheck

* Fix | Adjust path for .AssemblyAttributes in obj folder (dotnet#2550)

* Fix | Fixed GenerateSspiClientContext to retry negotiation with default port (dotnet#2559)

* Strong typed diagnostics (dotnet#2226)

* Fix | Replaced System.Runtime.Caching with Microsoft.Extensions.Caching.Memory (dotnet#2493)

* Add | Add SourceLink translation (dotnet#2552)

* Add | Cache TokenCredential objects to take advantage of token caching (dotnet#2380)

* Merged common code base for SqlUtil.cs (dotnet#2533)

* Add scope trace for GenerateSspiClientContext (dotnet#2497)

* Address conflicts (dotnet#2562)

* Addressing conflict (dotnet#2560)

* Merge SqlColumnEncryptionCertificateStoreProvider (dotnet#2521)

* Add | No-op if engineedition is 6 or 11 due to lack of support for ASSEMBLYPROPERTY function (dotnet#2593)

* Change | Remove some unneeded references and update Azure.Identity (dotnet#2577)

* Add test for issue 2456 (dotnet#2457)

* Merged common code base for AlwaysEncryptedKeyConverter (dotnet#2538)

* Merged AlwaysEncryptedKeyConverter.CrossPlatform and AlwaysEncryptedKeyConverter.Cng.

* 3 Small Changes (dotnet#2594)

* * Port sqlclientx datasource changes
* Remove link to missing nuget.config file
* Remove root namespaces from sqlclient csproj files

* Test to see if namespace changes are breaking the pr build

* Reinstate removing the root namespace and fix resource filename generation

* Test fixes to accommodate recent infra changes (dotnet#2646)

* Test fixes to accomodate recent infra changes

* Fix - Don't error when using infinte connect timeout and Entra auth (dotnet#2651)

* eng | Add delay signed to official builds (dotnet#2653)

* eng | Initial YAML CI pipeline (dotnet#2575)

* Fix | Fix decrypt failure to drain data (dotnet#2618)

* [Scheduled Run] Localized resource files from OneLocBuild

* eng | Add Delay sign to ref csprojs (dotnet#2684)

* [Scheduled Run] Localized resource files from OneLocBuild

* [Scheduled Run] Localized resource files from OneLocBuild

---------

Co-authored-by: Javad Rahnama <v-jarahn@microsoft.com>
Co-authored-by: David Engel <v-davidengel@microsoft.com>
Co-authored-by: Aris Rellegue <v-arellegue@microsoft.com>
Co-authored-by: DavoudEshtehari <61173489+DavoudEshtehari@users.noreply.github.com>
Co-authored-by: Benjamin Russell <russellben@microsoft.com>
Co-authored-by: Aris Rellegue <134557572+arellegue@users.noreply.github.com>
Co-authored-by: dauinsight <145612907+dauinsight@users.noreply.github.com>
Co-authored-by: Scott Addie <10702007+scottaddie@users.noreply.github.com>
Co-authored-by: Daniel Au <v-audaniel@microsoft.com>
Co-authored-by: Wraith <wraith2@gmail.com>
Co-authored-by: SqlClient Azure DevOps <sqlclient@microsoft.com>
Co-authored-by: Edward Neal <55035479+edwardneal@users.noreply.github.com>
Co-authored-by: Erik Ejlskov Jensen <ErikEJ@users.noreply.github.com>
Co-authored-by: David Engel <davidengel@microsoft.com>
dauinsight pushed a commit to dauinsight/SqlClient that referenced this pull request Aug 14, 2024
dauinsight added a commit to dauinsight/SqlClient that referenced this pull request Aug 14, 2024
dauinsight added a commit that referenced this pull request Aug 15, 2024
…caching (#2380) (#2775)

* Add | Cache TokenCredential objects to take advantage of token caching (#2380)

---------

Co-authored-by: David Engel <v-davidengel@microsoft.com>
dauinsight added a commit that referenced this pull request Aug 16, 2024
…caching (#2380) (#2776)

* Add | Cache TokenCredential objects to take advantage of token caching (#2380)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
💡 Enhancement New feature request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants