net/disk_cache/sql: Add feature parameters for SQLite configuration This CL adds two new feature parameters to kDiskCacheBackendExperiment to allow fine-tuning the SQLite database configuration for the SQL-based disk cache: 1. SqlDiskCacheReleaseMemoryAfterWrites: Controls whether SQLite aggressively releases cached memory after writes. This uses the release_memory_after_writes option in sql::DatabaseOptions. 2. SqlDiskCacheCacheSize: Allows overriding the SQLite cache size. These parameters are passed to sql::DatabaseOptions in the SqlPersistentStore::Backend constructor. Bug: 443174708 Change-Id: Ie3ca7ce9e0434d8f0b7988bffaa8fd5c2f080b93 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7604294 Reviewed-by: Greg Thompson <grt@chromium.org> Commit-Queue: Tsuyoshi Horo <horo@chromium.org> Cr-Commit-Position: refs/heads/main@{#1590508} NOKEYCHECK=True GitOrigin-RevId: f8128f49d5c6b35e03212cd4f6c8d9eeeb016d7d
diff --git a/base/features.cc b/base/features.cc index 02e2bf9..7e2fe7d 100644 --- a/base/features.cc +++ b/base/features.cc
@@ -505,6 +505,16 @@ &kDiskCacheBackendExperiment, "SqlDiskCacheSizeAndPriorityAwareEviction", true); +BASE_FEATURE_PARAM(bool, + kSqlDiskCacheReleaseMemoryAfterWrites, + &kDiskCacheBackendExperiment, + "SqlDiskCacheReleaseMemoryAfterWrites", + true); +BASE_FEATURE_PARAM(int, + kSqlDiskCacheCacheSize, + &kDiskCacheBackendExperiment, + "SqlDiskCacheCacheSize", + 0); #endif // ENABLE_DISK_CACHE_SQL_BACKEND BASE_FEATURE(kIgnoreHSTSForLocalhost, base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/base/features.h b/base/features.h index f61240d..9399adb 100644 --- a/base/features.h +++ b/base/features.h
@@ -566,6 +566,12 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM( bool, kSqlDiskCacheSizeAndPriorityAwareEviction); +// Whether to aggressively release SQLite's cached memory after writes. +NET_EXPORT BASE_DECLARE_FEATURE_PARAM(bool, + kSqlDiskCacheReleaseMemoryAfterWrites); +// The size of in-memory cache of SQLite database. 0 invokes SQLite's default. +// See https://sqlite.org/pragma.html#pragma_cache_size for more details. +NET_EXPORT BASE_DECLARE_FEATURE_PARAM(int, kSqlDiskCacheCacheSize); #endif // ENABLE_DISK_CACHE_SQL_BACKEND // If enabled, ignore Strict-Transport-Security for [*.]localhost hosts.
diff --git a/disk_cache/sql/sql_persistent_store_backend.cc b/disk_cache/sql/sql_persistent_store_backend.cc index defd9d2..b30bedb 100644 --- a/disk_cache/sql/sql_persistent_store_backend.cc +++ b/disk_cache/sql/sql_persistent_store_backend.cc
@@ -301,7 +301,10 @@ // This callback is only called while the `db_` instance // is alive, and never during destructor, so it's safe // to use base::Unretained. - base::Unretained(this))), + base::Unretained(this))) + .set_release_memory_after_writes( + net::features::kSqlDiskCacheReleaseMemoryAfterWrites.Get()) + .set_cache_size(net::features::kSqlDiskCacheCacheSize.Get()), // Tag for metrics collection. sql::Database::Tag("HttpCacheDiskCache")) { }