From 3a6cded002e986b4261b54bfc289720086d18a11 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Wed, 26 Jul 2017 16:02:13 -0700 Subject: [PATCH] Limit number of in-memory db connections to 1 per pool We should always keep pool size of 1 for in-memory databases since every :memory: db is separate from another. Test: com.android.providers.contacts.util.UserUtilsTest Bug: 64039907 Change-Id: If85af3eacfb5625036e29d44f88c1bebb338f46b --- .../android/database/sqlite/SQLiteConnectionPool.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java index 765f27ec7cf86..6ce8787e6c38c 100644 --- a/core/java/android/database/sqlite/SQLiteConnectionPool.java +++ b/core/java/android/database/sqlite/SQLiteConnectionPool.java @@ -1009,13 +1009,15 @@ public final class SQLiteConnectionPool implements Closeable { } private void setMaxConnectionPoolSizeLocked() { - if ((mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) { + if (!mConfiguration.isInMemoryDb() + && (mConfiguration.openFlags & SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING) != 0) { mMaxConnectionPoolSize = SQLiteGlobal.getWALConnectionPoolSize(); } else { - // TODO: We don't actually need to restrict the connection pool size to 1 + // We don't actually need to always restrict the connection pool size to 1 // for non-WAL databases. There might be reasons to use connection pooling - // with other journal modes. For now, enabling connection pooling and - // using WAL are the same thing in the API. + // with other journal modes. However, we should always keep pool size of 1 for in-memory + // databases since every :memory: db is separate from another. + // For now, enabling connection pooling and using WAL are the same thing in the API. mMaxConnectionPoolSize = 1; } }