Skip to content

Conversation

@siddhijain
Copy link
Contributor

Fixes AB#3417272

@siddhijain siddhijain requested a review from a team as a code owner November 4, 2025 03:26
Copilot AI review requested due to automatic review settings November 4, 2025 03:26
@siddhijain siddhijain requested a review from a team as a code owner November 4, 2025 03:26
@github-actions github-actions bot changed the title Use in-memory cache for accounts and credentials FixesAB#3417272 Use in-memory cache for accounts and credentials FixesAB#3417272, Fixes AB#3417272 Nov 4, 2025
Copy link
Contributor

Copilot AI left a 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_CREDENTIALS feature flag with a default value of false
  • Modifies token cache creation logic to check both the existing useInMemoryCache parameter 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

@mohitc1
Copy link
Contributor

mohitc1 commented Nov 4, 2025

        MicrosoftRefreshToken> create(@NonNull final IPlatformComponents components, boolean useInMemoryCache) {

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)

Copy link
Contributor

@mohitc1 mohitc1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@siddhijain siddhijain merged commit f904c60 into dev Nov 13, 2025
24 of 25 checks passed
siddhijain added a commit that referenced this pull request Nov 25, 2025
…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:&#43;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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants