-
Notifications
You must be signed in to change notification settings - Fork 45
Use in-memory cache for accounts and credentials FixesAB#3417272, Fixes AB#3417272 #2802
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
Use in-memory cache for accounts and credentials FixesAB#3417272, Fixes AB#3417272 #2802
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR introduces a feature flag to control whether the in-memory cache implementation is used for accounts and credentials in the token cache. The change adds a new flight configuration option that can be dynamically controlled without requiring code changes or redeployment.
- Adds a new
USE_IN_MEMORY_CACHE_FOR_ACCOUNTS_AND_CREDENTIALSfeature flag with a default value offalse - Modifies token cache creation logic to check both the existing
useInMemoryCacheparameter and the new flight configuration - Documents the change in the changelog
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| common4j/src/main/com/microsoft/identity/common/java/flighting/CommonFlight.java | Adds the new feature flag enum value for controlling in-memory cache usage |
| common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java | Updates cache creation logic to check the new flight configuration in addition to the existing parameter |
| changelog.txt | Documents the change as a MINOR version update |
common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java
Outdated
Show resolved
Hide resolved
common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java
Outdated
Show resolved
Hide resolved
Glanced through code quickly, I doubt this method in broker flows. Broker directly uses constructor, so the change here won't have an effect. Refers to: common4j/src/main/com/microsoft/identity/common/java/cache/MsalOAuth2TokenCache.java:152 in 00da88b. [](commit_id = 00da88b, deletion_comment = False) |
common4j/src/main/com/microsoft/identity/common/java/cache/BrokerOAuth2TokenCache.java
Show resolved
Hide resolved
common4j/src/main/com/microsoft/identity/common/java/cache/BrokerOAuth2TokenCache.java
Show resolved
Hide resolved
common4j/src/main/com/microsoft/identity/common/java/cache/BrokerOAuth2TokenCache.java
Outdated
Show resolved
Hide resolved
mohitc1
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
![]()
…B#3444129 (#2822) Fixes [AB#3444129](https://identitydivision.visualstudio.com/fac9d424-53d2-45c0-91b5-ef6ba7a6bf26/_workitems/edit/3444129) Cherry-picks two commits from dev to enable in-memory caching for accounts and credentials in the broker. ## Commits - **f904c60** - Use in-memory cache for accounts and credentials ([AB#3417272](https://identitydivision.visualstudio.com/fac9d424-53d2-45c0-91b5-ef6ba7a6bf26/_workitems/edit/3417272), #2802) - **228db78** - Share SharedPreferencesInMemoryCache across cache instances ([AB#3428107](https://identitydivision.visualstudio.com/fac9d424-53d2-45c0-91b5-ef6ba7a6bf26/_workitems/edit/3428107), #2813) ## Changes **Core Implementation** (`BrokerOAuth2TokenCache.java`) - Added static `ConcurrentHashMap` to share in-memory cache instances across `BrokerOAuth2TokenCache` instances - Reduces disk I/O and serialization overhead by reusing cache layers for the same underlying storage **Feature Flag** (`CommonFlight.java`) - Added `USE_IN_MEMORY_CACHE_FOR_ACCOUNTS_AND_CREDENTIALS` (default: false) **Telemetry** (`AttributeName.java`) - Added `in_memory_cache_used_for_accounts_and_credentials` attribute **Tests** - New `BrokerOAuth2TokenCacheWithInMemoryCacheTest.java` (1240 lines) - Extended `BrokerOAuth2TokenCacheTest.java` with cache sharing tests ## Conflicts Resolved `changelog.txt` had conflicts due to version markers in the release branch. Resolved by adding entries under vNext: ``` - [MINOR] Share SharedPreferencesInMemoryCache across instances of BrokerOAuth2TokenCache (#2813) - [MINOR] Use SharedPreferencesInMemoryCache implementation in Broker (#2802) ``` > [!WARNING] > > <details> > <summary>Firewall rules blocked me from connecting to one or more addresses (expand for details)</summary> > > #### I tried to connect to the following addresses, but was blocked by firewall rules: > > - `dl.google.com` > - Triggering command: `/usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.xml/javax.xml.namespace=ALL-UNNAMED -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Xmx3072m -Dfile.encoding=UTF-8 -Duser.country -Duser.language=en -Duser.variant` (dns block) > - `www.puppycrawl.com` > - Triggering command: `/opt/hostedtoolcache/CodeQL/2.23.3/x64/codeql/tools/linux64/java/bin/java /opt/hostedtoolcache/CodeQL/2.23.3/x64/codeql/tools/linux64/java/bin/java -jar /opt/hostedtoolcache/CodeQL/2.23.3/x64/codeql/xml/tools/xml-extractor.jar --fileList=/home/REDACTED/work/microsoft-authentication-library-common-for-android/.codeql-scratch/dbs/java/working/files-to-index2294403091429273239.list --sourceArchiveDir=/home/REDACTED/work/microsoft-authentication-library-common-for-android/.codeql-scratch/dbs/java/src --outputDir=/home/REDACTED/work/microsoft-authentication-library-common-for-android/.codeql-scratch/dbs/java/trap/java` (dns block) > > If you need me to access, download, or install something from one of these locations, you can either: > > - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled > - Add the appropriate URLs or hosts to the custom allowlist in this repository's [Copilot coding agent settings](https://github.com/AzureAD/microsoft-authentication-library-common-for-android/settings/copilot/coding_agent) (admins only) > > </details> <!-- START COPILOT CODING AGENT SUFFIX --> <details> <summary>Original prompt</summary> > Cherry-pick the following commits from the dev branch to the working/release/23.1.1 branch: > > - f904c60 > - 228db78 > > Include all files and changes from the specified commits. Ensure that any conflicts are noted in the pull request description. Provide a detailed summary of what was cherry-picked in the PR body. </details> *This pull request was created as a result of the following prompt from Copilot chat.* > Cherry-pick the following commits from the dev branch to the working/release/23.1.1 branch: > > - f904c60 > - 228db78 > > Include all files and changes from the specified commits. Ensure that any conflicts are noted in the pull request description. Provide a detailed summary of what was cherry-picked in the PR body. <!-- START COPILOT CODING AGENT TIPS --> --- 💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs. --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: siddhijain <[email protected]> Co-authored-by: Siddhi <[email protected]>
Fixes AB#3417272