Skip to content

feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to configuration to manage cache size#1227

Merged
mtrezza merged 4 commits intoparse-community:masterfrom
evtimmy:feature/configurable-cache-size
Mar 11, 2026
Merged

feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to configuration to manage cache size#1227
mtrezza merged 4 commits intoparse-community:masterfrom
evtimmy:feature/configurable-cache-size

Conversation

@evtimmy
Copy link
Copy Markdown
Contributor

@evtimmy evtimmy commented Mar 5, 2026

New Pull Request Checklist

Issue Description

Closes: #1098

Approach

Exposed DEFAULT_MAX_KEY_VALUE_CACHE_BYTES and DEFAULT_MAX_KEY_VALUE_CACHE_FILES as
public constants in ParseKeyValueCache, and added maxKeyValueCacheBytes() and
maxKeyValueCacheFiles() builder methods to Parse.Configuration.Builder.

The configured values are applied in Parse.initialize() before the cache is initialized.
If the cache size is reduced in an app update, existing cache files are trimmed lazily on
the next write via the existing LRU eviction logic.

TODOs before merging

  • Add tests
  • Add changes to documentation (guides, repository pages, in-code descriptions)

Summary by CodeRabbit

  • New Features

    • Disk cache size is now configurable: set maximum bytes and maximum file count via the Configuration Builder.
  • Behavior

    • Configured limits are applied during initialization and used when the local datastore is not enabled; sensible defaults remain in place.
    • Builder methods validate inputs and reject negative values.
  • Tests

    • Added unit tests for defaults, custom sizes, validation, and related initialization behavior.

@parse-github-assistant
Copy link
Copy Markdown

I will reformat the title to use the proper commit message syntax.

@parse-github-assistant parse-github-assistant bot changed the title feat: add maxKeyValueCacheBytes and maxKeyValueCacheFiles to Configur… feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to Configur… Mar 5, 2026
@parse-github-assistant
Copy link
Copy Markdown

parse-github-assistant bot commented Mar 5, 2026

🚀 Thanks for opening this pull request! We appreciate your effort in improving the project. Please let us know once your pull request is ready for review.

Note

Please respond to review comments from AI agents just like you would to comments from a human reviewer. Let the reviewer resolve their own comments, unless they have reviewed and accepted your commit, or agreed with your explanation for why the feedback was incorrect.

Caution

Pull requests must be written using an AI agent with human supervision. Pull requests written entirely by a human will likely be rejected, because of lower code quality, higher review effort and the higher risk of introducing bugs. Please note that AI review comments on this pull request alone do not satisfy this requirement.

@parseplatformorg
Copy link
Copy Markdown

parseplatformorg commented Mar 5, 2026

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 5, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds configurable key-value cache limits to Parse.Configuration and Builder, wires those values into ParseKeyValueCache during initialization, and adds/updates tests and test scaffolding; also includes Gradle wrapper script and properties updates.

Changes

Cohort / File(s) Summary
Configuration API
parse/src/main/java/com/parse/Parse.java
Add int maxKeyValueCacheBytes and int maxKeyValueCacheFiles to Parse.Configuration and Parse.Configuration.Builder; introduce DEFAULT_MAX_KEY_VALUE_CACHE_BYTES / DEFAULT_MAX_KEY_VALUE_CACHE_FILES; add Builder fields and fluent setters maxKeyValueCacheBytes(int) / maxKeyValueCacheFiles(int) with non-negative validation; constructor assigns new fields; Parse.initialize assigns these values to ParseKeyValueCache when local datastore is disabled.
Key-Value Cache Tests
parse/src/test/java/com/parse/ParseKeyValueCacheTest.java
Add five tests validating defaults, custom overrides, builder propagation, and rejection of negative arguments.
Test scaffolding & URI handling updates
parse/src/test/java/com/parse/ParseCountingUriHttpBodyTest.java, parse/src/test/java/com/parse/ParseUriHttpBodyTest.java, parse/src/test/java/com/parse/ParseFileTest.java, parse/src/test/java/com/parse/ParseFileControllerTest.java, parse/src/test/java/com/parse/ResetPluginsParseTest.java
Add/modify test lifecycle (@Before/@after), introduce Robolectric runner or explicit mocks, register ShadowContentResolver streams, convert some tests to use Uri instead of File, and ensure ParsePlugins/local datastore are reset in teardown.
Gradle wrapper scripts
gradlew, gradlew.bat, gradle/wrapper/gradle-wrapper.properties
Replace and reorganize wrapper scripts: add license headers, change shebang and path/symlink resolution, set default JVM opts (-Xmx64m -Xms64m), simplify argument handling; properties file reordered with minor non-functional edits.

Sequence Diagram(s)

sequenceDiagram
    participant Dev as Developer (Builder)
    participant Config as Parse.Configuration
    participant Init as Parse.initialize
    participant Cache as ParseKeyValueCache

    Dev->>Config: build() with maxKeyValueCacheBytes/Files
    Config->>Init: provide configuration
    Init->>Cache: set maxKeyValueCacheBytes/Files (when localDatastore disabled)
    Init->>Cache: initialize()
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • mtrezza
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.34% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Out of Scope Changes check ❓ Inconclusive Changes to gradle wrapper files and test scaffolding in ParseCountingUriHttpBodyTest, ParseFileControllerTest, ParseFileTest, ParseUriHttpBodyTest, and ResetPluginsParseTest appear to address pre-existing CI failures unrelated to the core feature but necessary for test execution. Verify that gradle wrapper and test infrastructure updates are addressing CI failures mentioned by the author and not introducing unrelated changes that should be in a separate PR.
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed The description covers all required template sections: it confirms no vulnerability, references issue #1098, explains the approach, marks tests as complete (✓), and notes documentation as TODO.
Linked Issues check ✅ Passed The PR successfully addresses issue #1098 by exposing cache configuration constants publicly and adding builder methods to Parse.Configuration.Builder for configurable cache size and file count.
Title check ✅ Passed The PR title clearly and specifically describes the main change: adding two new configuration fields to manage cache size, which aligns with the primary objective of exposing cache size configuration.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@parse/src/main/java/com/parse/Parse.java`:
- Around line 725-740: Both Builder.maxKeyValueCacheBytes and
Builder.maxKeyValueCacheFiles must reject negative inputs; add validation in
these setter methods (maxKeyValueCacheBytes(int) and maxKeyValueCacheFiles(int))
that throws an IllegalArgumentException (or similar) when the argument is < 0
with a clear message, and only assign the field and return this when the value
is valid.

In `@parse/src/main/java/com/parse/ParseKeyValueCache.java`:
- Around line 25-28: The constants DEFAULT_MAX_KEY_VALUE_CACHE_BYTES and
DEFAULT_MAX_KEY_VALUE_CACHE_FILES are declared public but are unreachable
because their enclosing class ParseKeyValueCache is package-private; fix by
changing the ParseKeyValueCache class declaration to public so external SDK
consumers (and Parse.Configuration.Builder Javadoc references) can access
DEFAULT_MAX_KEY_VALUE_CACHE_BYTES and DEFAULT_MAX_KEY_VALUE_CACHE_FILES,
ensuring no other API or visibility expectations are violated.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 09ce1077-fd24-4cf6-aee8-e239010d2197

📥 Commits

Reviewing files that changed from the base of the PR and between d6926f3 and 49d8769.

📒 Files selected for processing (3)
  • parse/src/main/java/com/parse/Parse.java
  • parse/src/main/java/com/parse/ParseKeyValueCache.java
  • parse/src/test/java/com/parse/ParseKeyValueCacheTest.java

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
parse/src/main/java/com/parse/Parse.java (1)

729-749: Clarify applicability of these settings in Javadoc.

Consider noting in the method docs that these limits are applied on the non-local-datastore initialization path, to avoid ambiguity for integrators.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@parse/src/main/java/com/parse/Parse.java` around lines 729 - 749, Update the
Javadoc for Builder.maxKeyValueCacheBytes and Builder.maxKeyValueCacheFiles to
explicitly state these limits are only applied when the Parse SDK initializes
the disk cache via the non-local-datastore initialization path (i.e., when the
SDK manages the on-disk key/value cache), and do not affect disk caching when
using a local datastore or custom cache implementation; mention the default
constants (Builder#DEFAULT_MAX_KEY_VALUE_CACHE_BYTES and
Builder#DEFAULT_MAX_KEY_VALUE_CACHE_FILES) and that these settings take effect
during SDK initialization so integrators know when they will be honored.
parse/src/test/java/com/parse/ParseKeyValueCacheTest.java (1)

126-149: Prefer non-null Context in builder tests.

Consider using a mocked Context instead of null so tests align with the @NonNull API contract and remain resilient if constructor null-checking is tightened later.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@parse/src/test/java/com/parse/ParseKeyValueCacheTest.java` around lines 126 -
149, Replace the null Context used in the Parse.Configuration.Builder calls in
the tests with a non-null mocked Context to honor the `@NonNull` API contract;
update the tests testConfigurationBuilderSetsCustomCacheValues,
testConfigurationBuilderRejectsNegativeCacheBytes, and
testConfigurationBuilderRejectsNegativeCacheFiles to instantiate a mock or dummy
android.content.Context and pass it to new Parse.Configuration.Builder(...) so
the builder calls (e.g., .applicationId(...), .maxKeyValueCacheBytes(...),
.maxKeyValueCacheFiles(...), .build()) operate with a real Context object rather
than null.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@parse/src/main/java/com/parse/Parse.java`:
- Around line 729-749: Update the Javadoc for Builder.maxKeyValueCacheBytes and
Builder.maxKeyValueCacheFiles to explicitly state these limits are only applied
when the Parse SDK initializes the disk cache via the non-local-datastore
initialization path (i.e., when the SDK manages the on-disk key/value cache),
and do not affect disk caching when using a local datastore or custom cache
implementation; mention the default constants
(Builder#DEFAULT_MAX_KEY_VALUE_CACHE_BYTES and
Builder#DEFAULT_MAX_KEY_VALUE_CACHE_FILES) and that these settings take effect
during SDK initialization so integrators know when they will be honored.

In `@parse/src/test/java/com/parse/ParseKeyValueCacheTest.java`:
- Around line 126-149: Replace the null Context used in the
Parse.Configuration.Builder calls in the tests with a non-null mocked Context to
honor the `@NonNull` API contract; update the tests
testConfigurationBuilderSetsCustomCacheValues,
testConfigurationBuilderRejectsNegativeCacheBytes, and
testConfigurationBuilderRejectsNegativeCacheFiles to instantiate a mock or dummy
android.content.Context and pass it to new Parse.Configuration.Builder(...) so
the builder calls (e.g., .applicationId(...), .maxKeyValueCacheBytes(...),
.maxKeyValueCacheFiles(...), .build()) operate with a real Context object rather
than null.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ca2f12bb-e9e3-489b-96a1-0ac520843b01

📥 Commits

Reviewing files that changed from the base of the PR and between 59db66a and 5809e6e.

📒 Files selected for processing (2)
  • parse/src/main/java/com/parse/Parse.java
  • parse/src/test/java/com/parse/ParseKeyValueCacheTest.java

@evtimmy
Copy link
Copy Markdown
Contributor Author

evtimmy commented Mar 6, 2026

The CI failures are pre-existing and unrelated to this PR. They occur on the master branch as well (ParseCorePluginsTest, ParseCountingUriHttpBodyTest, ParseDecoderTest, ParseFileControllerTest, ParseFileTest, ParseUriHttpBodyTest). All 5 new tests added in this PR pass successfully.

@mtrezza
Copy link
Copy Markdown
Member

mtrezza commented Mar 6, 2026

Without a functioning CI we cannot make any merges realistically speaking. We'd be flying with eyes closed.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
parse/src/test/java/com/parse/ParseKeyValueCacheTest.java (2)

141-155: Consider adding edge-case tests for zero values.

The tests verify that negative values are rejected, which is good. However, the behavior for zero values (maxKeyValueCacheBytes(0) and maxKeyValueCacheFiles(0)) is not tested. Depending on the intended design:

  • If zero is invalid (e.g., could cause issues with cache logic), add tests asserting rejection.
  • If zero is valid (e.g., effectively disables caching), add tests confirming acceptance.

This clarifies the API contract for edge cases.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@parse/src/test/java/com/parse/ParseKeyValueCacheTest.java` around lines 141 -
155, Add explicit tests for zero values to clarify the API contract: in
ParseKeyValueCacheTest create two new `@Test` methods that invoke new
Parse.Configuration.Builder(null).applicationId("test").maxKeyValueCacheBytes(0).build()
and .maxKeyValueCacheFiles(0).build() and assert the expected behavior (either
expect IllegalArgumentException if zero should be rejected, or no exception and
successful build if zero should be accepted); reference the existing
Parse.Configuration.Builder and the methods maxKeyValueCacheBytes and
maxKeyValueCacheFiles to place the new tests alongside the negative-value tests
so zero-case behavior is covered.

125-139: Consider adding an integration test for Parse.initialize().

This test verifies that Parse.Configuration stores the custom values, but according to the PR description, Parse.initialize() should apply these values to ParseKeyValueCache. An integration test verifying that the configured values propagate to ParseKeyValueCache.maxKeyValueCacheBytes and ParseKeyValueCache.maxKeyValueCacheFiles during initialization would strengthen coverage.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@parse/src/test/java/com/parse/ParseKeyValueCacheTest.java` around lines 125 -
139, Add an integration test that calls Parse.initialize(...) with a
Parse.Configuration built via Parse.Configuration.Builder setting
maxKeyValueCacheBytes and maxKeyValueCacheFiles, then verify those configured
values are applied to the ParseKeyValueCache (e.g., check
ParseKeyValueCache.maxKeyValueCacheBytes and
ParseKeyValueCache.maxKeyValueCacheFiles or the cache instance's corresponding
getters) after initialization; ensure the test uses unique values, resets/cleans
Parse state before/after (so Parse.initialize can run deterministically), and
references Parse.initialize, Parse.Configuration.Builder, and ParseKeyValueCache
to locate the relevant code.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@parse/src/test/java/com/parse/ParseKeyValueCacheTest.java`:
- Around line 141-155: Add explicit tests for zero values to clarify the API
contract: in ParseKeyValueCacheTest create two new `@Test` methods that invoke new
Parse.Configuration.Builder(null).applicationId("test").maxKeyValueCacheBytes(0).build()
and .maxKeyValueCacheFiles(0).build() and assert the expected behavior (either
expect IllegalArgumentException if zero should be rejected, or no exception and
successful build if zero should be accepted); reference the existing
Parse.Configuration.Builder and the methods maxKeyValueCacheBytes and
maxKeyValueCacheFiles to place the new tests alongside the negative-value tests
so zero-case behavior is covered.
- Around line 125-139: Add an integration test that calls Parse.initialize(...)
with a Parse.Configuration built via Parse.Configuration.Builder setting
maxKeyValueCacheBytes and maxKeyValueCacheFiles, then verify those configured
values are applied to the ParseKeyValueCache (e.g., check
ParseKeyValueCache.maxKeyValueCacheBytes and
ParseKeyValueCache.maxKeyValueCacheFiles or the cache instance's corresponding
getters) after initialization; ensure the test uses unique values, resets/cleans
Parse state before/after (so Parse.initialize can run deterministically), and
references Parse.initialize, Parse.Configuration.Builder, and ParseKeyValueCache
to locate the relevant code.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9bb75d03-ae0a-4d87-a651-85acdbadac0b

📥 Commits

Reviewing files that changed from the base of the PR and between 5809e6e and b6c2a9a.

📒 Files selected for processing (2)
  • parse/src/main/java/com/parse/Parse.java
  • parse/src/test/java/com/parse/ParseKeyValueCacheTest.java
🚧 Files skipped from review as they are similar to previous changes (1)
  • parse/src/main/java/com/parse/Parse.java

@mtrezza
Copy link
Copy Markdown
Member

mtrezza commented Mar 6, 2026

I suggest to fix the CI in a separate PR first, and not fix it into this PR.

@evtimmy
Copy link
Copy Markdown
Contributor Author

evtimmy commented Mar 6, 2026

I'll give it a try with a separate PR.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
parse/src/test/java/com/parse/ResetPluginsParseTest.java (1)

19-24: Ordering is correct and follows internal pattern.

The addition of Parse.setLocalDatastore(null) before ParseCorePlugins.getInstance().reset() matches the pattern used in Parse.disableLocalDatastore() (see context snippet 3), ensuring the isLocalDatastoreEnabled flag is false before controllers are cleared.

Consider adding the same call to setUp() for defensive completeness—if a previous test fails or is interrupted before its tearDown() completes, the subsequent test's setUp() would still start with stale datastore state.

♻️ Optional: Add defensive cleanup to setUp()
 `@Before`
 public void setUp() throws Exception {
+    Parse.setLocalDatastore(null);
     ParseCorePlugins.getInstance().reset();
     ParsePlugins.reset();
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@parse/src/test/java/com/parse/ResetPluginsParseTest.java` around lines 19 -
24, Add defensive cleanup to setUp(): call Parse.setLocalDatastore(null) at the
start of the setUp() method so tests always begin with local datastore disabled;
this mirrors the tearDown() ordering that calls Parse.setLocalDatastore(null)
before ParseCorePlugins.getInstance().reset() and ParsePlugins.reset(), and
prevents stale datastore state if a prior test failed to complete its
tearDown().
parse/src/test/java/com/parse/ParseFileControllerTest.java (1)

231-249: Drop the temp-file assertion that is no longer on the URI path.

After Line 233 switches the source to mock(Uri.class), the file created on Lines 231-232 is no longer used by saveAsync(...). assertTrue(file.exists()) at Line 248 now passes regardless of the behavior under test, so either restore a real Uri.fromFile(file) or remove the temp file and assertion.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@parse/src/test/java/com/parse/ParseCountingUriHttpBodyTest.java`:
- Around line 66-69: The test registers a single reusable InputStream via
Shadows.shadowOf(...).registerInputStream(uri, ...) but
ParseCountingUriHttpBody.writeTo() opens the URI twice (once for content length,
once to copy), so the second open gets EOF; replace the registerInputStream(...)
call with registerInputStreamSupplier(...) and provide a supplier that returns a
fresh new ByteArrayInputStream(getData().getBytes()) for the given uri so each
openInputStream() in ParseCountingUriHttpBody.writeTo() receives a new stream;
update the test where ShadowContentResolver and uri are used to call
registerInputStreamSupplier instead.

---

Nitpick comments:
In `@parse/src/test/java/com/parse/ResetPluginsParseTest.java`:
- Around line 19-24: Add defensive cleanup to setUp(): call
Parse.setLocalDatastore(null) at the start of the setUp() method so tests always
begin with local datastore disabled; this mirrors the tearDown() ordering that
calls Parse.setLocalDatastore(null) before
ParseCorePlugins.getInstance().reset() and ParsePlugins.reset(), and prevents
stale datastore state if a prior test failed to complete its tearDown().

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 32c264f7-dc4d-4011-987d-0fc17ef446a3

📥 Commits

Reviewing files that changed from the base of the PR and between b6c2a9a and 05c6991.

⛔ Files ignored due to path filters (1)
  • gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
📒 Files selected for processing (8)
  • gradle/wrapper/gradle-wrapper.properties
  • gradlew
  • gradlew.bat
  • parse/src/test/java/com/parse/ParseCountingUriHttpBodyTest.java
  • parse/src/test/java/com/parse/ParseFileControllerTest.java
  • parse/src/test/java/com/parse/ParseFileTest.java
  • parse/src/test/java/com/parse/ParseUriHttpBodyTest.java
  • parse/src/test/java/com/parse/ResetPluginsParseTest.java

@codecov
Copy link
Copy Markdown

codecov bot commented Mar 11, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 67.46%. Comparing base (83aec68) to head (206922c).
⚠️ Report is 7 commits behind head on master.

Additional details and impacted files
@@              Coverage Diff              @@
##             master    #1227       +/-   ##
=============================================
+ Coverage      0.00%   67.46%   +67.46%     
- Complexity        0     2304     +2304     
=============================================
  Files           124      124               
  Lines         10076    10090       +14     
  Branches       1359     1361        +2     
=============================================
+ Hits              0     6807     +6807     
+ Misses        10076     2748     -7328     
- Partials          0      535      +535     

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

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@evtimmy evtimmy force-pushed the feature/configurable-cache-size branch from 05c6991 to 206922c Compare March 11, 2026 02:50
@evtimmy
Copy link
Copy Markdown
Contributor Author

evtimmy commented Mar 11, 2026

@mtrezza rebased the PR and now CI is passing. Do we need anything else? Otherwise ready to merge when you get the chance, thanks!

@mtrezza mtrezza changed the title feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to Configur… feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to Configuration Mar 11, 2026
@mtrezza mtrezza changed the title feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to Configuration feat: Add maxKeyValueCacheBytes and maxKeyValueCacheFiles to configuration to manage cache size Mar 11, 2026
@mtrezza mtrezza merged commit c19f02f into parse-community:master Mar 11, 2026
8 checks passed
@mtrezza
Copy link
Copy Markdown
Member

mtrezza commented Mar 11, 2026

@evtimmy Nice work!

parseplatformorg pushed a commit that referenced this pull request Mar 11, 2026
# [4.4.0](4.3.0...4.4.0) (2026-03-11)

### Features

* Add `maxKeyValueCacheBytes` and `maxKeyValueCacheFiles` to configuration to manage cache size ([#1227](#1227)) ([c19f02f](c19f02f))
@parseplatformorg
Copy link
Copy Markdown

🎉 This change has been released in version 4.4.0

@parseplatformorg parseplatformorg added the state:released Released as stable version label Mar 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

state:released Released as stable version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ability to configure max cache size and and count for ParseKeyValueCache

4 participants