Merge "Default to FULL synchronous mode for sqlite DBs in system server" into pi-dev

This commit is contained in:
Makoto Onuki
2018-08-17 23:33:50 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 0 deletions

View File

@@ -39,11 +39,18 @@ import android.os.SystemProperties;
public final class SQLiteGlobal {
private static final String TAG = "SQLiteGlobal";
/** @hide */
public static final String SYNC_MODE_FULL = "FULL";
private static final Object sLock = new Object();
private static int sDefaultPageSize;
private static native int nativeReleaseMemory();
/** @hide */
public static volatile String sDefaultSyncMode;
private SQLiteGlobal() {
}
@@ -103,6 +110,11 @@ public final class SQLiteGlobal {
* Gets the default database synchronization mode when WAL is not in use.
*/
public static String getDefaultSyncMode() {
// Use the FULL synchronous mode for system processes by default.
String defaultMode = sDefaultSyncMode;
if (defaultMode != null) {
return defaultMode;
}
return SystemProperties.get("debug.sqlite.syncmode",
Resources.getSystem().getString(
com.android.internal.R.string.db_default_sync_mode));
@@ -112,6 +124,11 @@ public final class SQLiteGlobal {
* Gets the database synchronization mode when in WAL mode.
*/
public static String getWALSyncMode() {
// Use the FULL synchronous mode for system processes by default.
String defaultMode = sDefaultSyncMode;
if (defaultMode != null) {
return defaultMode;
}
return SystemProperties.get("debug.sqlite.wal.syncmode",
Resources.getSystem().getString(
com.android.internal.R.string.db_wal_sync_mode));

View File

@@ -28,6 +28,7 @@ import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources.Theme;
import android.database.sqlite.SQLiteCompatibilityWalFlags;
import android.database.sqlite.SQLiteGlobal;
import android.os.BaseBundle;
import android.os.Binder;
import android.os.Build;
@@ -346,6 +347,10 @@ public final class SystemServer {
Binder.setWarnOnBlocking(true);
// The system server should always load safe labels
PackageItemInfo.setForceSafeLabels(true);
// Default to FULL within the system server.
SQLiteGlobal.sDefaultSyncMode = SQLiteGlobal.SYNC_MODE_FULL;
// Deactivate SQLiteCompatibilityWalFlags until settings provider is initialized
SQLiteCompatibilityWalFlags.init(null);