From 7b04c4176d9cb2f96487ad891f4cf769bccb4f1b Mon Sep 17 00:00:00 2001 From: Vasu Nori Date: Tue, 20 Jul 2010 10:31:21 -0700 Subject: [PATCH] make disableWriteAheadLogging method public so apps can disable WAL music2 app has the weird situation where it embeds the jumper C++ code and that code uses its own version of sqlite. so, java side may want to disable WAL to make c++ code work well with java usage of sqlite. since WAL is made default option for all apps, this CL makes it possible for music2 app to disable WAL. Change-Id: I39ddbc9b4648f12b206ff3e76d30341da5955bd4 --- .../database/sqlite/SQLiteDatabase.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java index c0226f85e267e..d0588582ca875 100644 --- a/core/java/android/database/sqlite/SQLiteDatabase.java +++ b/core/java/android/database/sqlite/SQLiteDatabase.java @@ -400,6 +400,7 @@ public class SQLiteDatabase extends SQLiteClosable { * @see #unlock() */ /* package */ void lock() { + verifyDbIsOpen(); if (!mLockingEnabled) return; mLock.lock(); if (SQLiteDebug.DEBUG_LOCK_TIME_TRACKING) { @@ -420,6 +421,7 @@ public class SQLiteDatabase extends SQLiteClosable { * @see #unlockForced() */ private void lockForced() { + verifyDbIsOpen(); mLock.lock(); if (SQLiteDebug.DEBUG_LOCK_TIME_TRACKING) { if (mLock.getHoldCount() == 1) { @@ -952,7 +954,10 @@ public class SQLiteDatabase extends SQLiteClosable { //STOPSHIP - uncomment the following line //sqliteDatabase.setJournalMode(path, "TRUNCATE"); // STOPSHIP remove the following lines - sqliteDatabase.enableWriteAheadLogging(); + if (!path.equalsIgnoreCase(MEMORY_DB_PATH)) { + sqliteDatabase.enableWriteAheadLogging(); + } + // END STOPSHIP // add this database to the list of databases opened in this process ActiveDatabases.addActiveDatabase(sqliteDatabase); @@ -2406,14 +2411,18 @@ public class SQLiteDatabase extends SQLiteClosable { } /** - * package visibility only for testing purposes + * This method disables the features enabled by {@link #enableWriteAheadLogging()}. + * @hide */ - /* package */ synchronized void disableWriteAheadLogging() { - if (mConnectionPool == null) { - return; + public void disableWriteAheadLogging() { + synchronized (this) { + if (mConnectionPool == null) { + return; + } + mConnectionPool.close(); + mConnectionPool = null; + setJournalMode(mPath, "TRUNCATE"); } - mConnectionPool.close(); - mConnectionPool = null; } /**