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
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index c0226f8..d058858 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -400,6 +400,7 @@
* @see #unlock()
*/
/* package */ void lock() {
+ verifyDbIsOpen();
if (!mLockingEnabled) return;
mLock.lock();
if (SQLiteDebug.DEBUG_LOCK_TIME_TRACKING) {
@@ -420,6 +421,7 @@
* @see #unlockForced()
*/
private void lockForced() {
+ verifyDbIsOpen();
mLock.lock();
if (SQLiteDebug.DEBUG_LOCK_TIME_TRACKING) {
if (mLock.getHoldCount() == 1) {
@@ -952,7 +954,10 @@
//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 @@
}
/**
- * 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;
}
/**