summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fyodor Kupolov <fkupolov@google.com> 2017-07-26 16:02:13 -0700
committer Fyodor Kupolov <fkupolov@google.com> 2017-07-26 16:07:09 -0700
commit3a6cded002e986b4261b54bfc289720086d18a11 (patch)
tree1ccf0195d3383f09bad260a7622febbfcb757f59
parent36d8b489d2da7208ddee3248a4e02b0e58fb4cd4 (diff)
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
-rw-r--r--core/java/android/database/sqlite/SQLiteConnectionPool.java10
1 files changed, 6 insertions, 4 deletions
diff --git a/core/java/android/database/sqlite/SQLiteConnectionPool.java b/core/java/android/database/sqlite/SQLiteConnectionPool.java
index 765f27ec7cf8..6ce8787e6c38 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;
}
}