Loading core/java/android/permission/flags.aconfig +6 −0 Original line number Diff line number Diff line Loading @@ -493,3 +493,9 @@ flag { bug: "341941666" } flag { name: "sqlite_discrete_op_event_logging_enabled" namespace: "permissions" description: "Collect sqlite performance metrics for discrete ops." bug: "377584611" } services/core/java/com/android/server/appop/DiscreteOpsDbHelper.java +22 −1 Original line number Diff line number Diff line Loading @@ -27,9 +27,13 @@ import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteRawStatement; import android.os.Environment; import android.os.SystemClock; import android.permission.flags.Flags; import android.util.IntArray; import android.util.Slog; import com.android.internal.util.FrameworkStatsLog; import java.io.File; import java.util.ArrayList; import java.util.List; Loading Loading @@ -76,6 +80,10 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { if (opEvents.isEmpty()) { return; } long startTime = 0; if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { startTime = SystemClock.elapsedRealtime(); } SQLiteDatabase db = getWritableDatabase(); // TODO (b/383157289) what if database is busy and can't start a transaction? will read Loading Loading @@ -117,6 +125,11 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { + " file size (bytes) : " + getDatabaseFile().length(), exception); } } if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { long timeTaken = SystemClock.elapsedRealtime() - startTime; FrameworkStatsLog.write(FrameworkStatsLog.SQLITE_DISCRETE_OP_EVENT_REPORTED, -1, timeTaken, getDatabaseFile().length()); } } private void bindTextOrNull(SQLiteRawStatement statement, int index, @Nullable String text) { Loading Loading @@ -181,7 +194,10 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { uidFilter, packageNameFilter, attributionTagFilter, opCodesFilter, opFlagsFilter); String sql = buildSql(conditions, orderByColumn, limit); long startTime = 0; if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { startTime = SystemClock.elapsedRealtime(); } SQLiteDatabase db = getReadableDatabase(); List<DiscreteOpsSqlRegistry.DiscreteOp> results = new ArrayList<>(); db.beginTransactionReadOnly(); Loading Loading @@ -225,6 +241,11 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { } finally { db.endTransaction(); } if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { long timeTaken = SystemClock.elapsedRealtime() - startTime; FrameworkStatsLog.write(FrameworkStatsLog.SQLITE_DISCRETE_OP_EVENT_REPORTED, timeTaken, -1, getDatabaseFile().length()); } return results; } Loading Loading
core/java/android/permission/flags.aconfig +6 −0 Original line number Diff line number Diff line Loading @@ -493,3 +493,9 @@ flag { bug: "341941666" } flag { name: "sqlite_discrete_op_event_logging_enabled" namespace: "permissions" description: "Collect sqlite performance metrics for discrete ops." bug: "377584611" }
services/core/java/com/android/server/appop/DiscreteOpsDbHelper.java +22 −1 Original line number Diff line number Diff line Loading @@ -27,9 +27,13 @@ import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteRawStatement; import android.os.Environment; import android.os.SystemClock; import android.permission.flags.Flags; import android.util.IntArray; import android.util.Slog; import com.android.internal.util.FrameworkStatsLog; import java.io.File; import java.util.ArrayList; import java.util.List; Loading Loading @@ -76,6 +80,10 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { if (opEvents.isEmpty()) { return; } long startTime = 0; if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { startTime = SystemClock.elapsedRealtime(); } SQLiteDatabase db = getWritableDatabase(); // TODO (b/383157289) what if database is busy and can't start a transaction? will read Loading Loading @@ -117,6 +125,11 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { + " file size (bytes) : " + getDatabaseFile().length(), exception); } } if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { long timeTaken = SystemClock.elapsedRealtime() - startTime; FrameworkStatsLog.write(FrameworkStatsLog.SQLITE_DISCRETE_OP_EVENT_REPORTED, -1, timeTaken, getDatabaseFile().length()); } } private void bindTextOrNull(SQLiteRawStatement statement, int index, @Nullable String text) { Loading Loading @@ -181,7 +194,10 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { uidFilter, packageNameFilter, attributionTagFilter, opCodesFilter, opFlagsFilter); String sql = buildSql(conditions, orderByColumn, limit); long startTime = 0; if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { startTime = SystemClock.elapsedRealtime(); } SQLiteDatabase db = getReadableDatabase(); List<DiscreteOpsSqlRegistry.DiscreteOp> results = new ArrayList<>(); db.beginTransactionReadOnly(); Loading Loading @@ -225,6 +241,11 @@ class DiscreteOpsDbHelper extends SQLiteOpenHelper { } finally { db.endTransaction(); } if (Flags.sqliteDiscreteOpEventLoggingEnabled()) { long timeTaken = SystemClock.elapsedRealtime() - startTime; FrameworkStatsLog.write(FrameworkStatsLog.SQLITE_DISCRETE_OP_EVENT_REPORTED, timeTaken, -1, getDatabaseFile().length()); } return results; } Loading