diff options
author | Alexander Martinz <amartinz@shiftphones.com> | 2018-04-13 18:41:10 +0200 |
---|---|---|
committer | Joey <joey@lineageos.org> | 2018-04-29 14:24:49 +0200 |
commit | 37894424d1c3e96505759f2618696bbfd5609470 (patch) | |
tree | fbc9c6d66a68a2c800d924b7494bfad6676a66de | |
parent | f48c6b02170acacb1cf26e6bbb4d103ae5184507 (diff) | |
download | android_packages_apps_Trebuchet-37894424d1c3e96505759f2618696bbfd5609470.tar.gz android_packages_apps_Trebuchet-37894424d1c3e96505759f2618696bbfd5609470.tar.bz2 android_packages_apps_Trebuchet-37894424d1c3e96505759f2618696bbfd5609470.zip |
LauncherProvider: fix crash when disk is full
Stacktrace:
android.database.sqlite.SQLiteFullException: database or disk is full (code 13)
at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(SQLiteConnection.java)
at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:750)
at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1604)
at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1550)
at com.android.launcher3.LauncherProvider.update(LauncherProvider.java:360)
at android.content.ContentProvider$Transport.update(ContentProvider.java:359)
at android.content.ContentResolver.update(ContentResolver.java:1672)
at com.android.launcher3.model.ModelWriter$UpdateItemRunnable.run(ModelWriter.java:290)
at com.android.launcher3.util.LooperExecutor.execute(LooperExecutor.java:39)
at com.android.launcher3.model.ModelWriter.updateItemInDatabase(ModelWriter.java:197)
at com.android.launcher3.model.PackageUpdatedTask.execute(PackageUpdatedTask.java:258)
at com.android.launcher3.model.BaseModelUpdateTask.run(BaseModelUpdateTask.java:67)
at android.os.Handler.handleCallback(Handler.java:869)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:206)
at android.os.HandlerThread.run(HandlerThread.java:65)
Issue: SHIFTOS-SW-18
Change-Id: I4c4fa9239b9ff14a6614187c450d12b6006fde82
Signed-off-by: Alexander Martinz <amartinz@shiftphones.com>
-rw-r--r-- | src/com/android/launcher3/LauncherProvider.java | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index b31df9894..ea1c1d1f3 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -34,6 +34,7 @@ import android.content.res.Resources; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteFullException; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteQueryBuilder; import android.database.sqlite.SQLiteStatement; @@ -194,7 +195,18 @@ public class LauncherProvider extends ContentProvider { throw new RuntimeException("Error: attempting to add item without specifying an id"); } helper.checkId(table, values); - return db.insert(table, nullColumnHack, values); + + long inserted; + try { + inserted = db.insert(table, nullColumnHack, values); + } catch (SQLiteFullException e) { + Log.e(TAG, "Could not insert database entry", e); + inserted = 0L; + } + if (Utilities.IS_DEBUG_DEVICE && inserted < 0) { + Log.d(TAG, "Could not insert database entry", new RuntimeException()); + } + return inserted; } private void reloadLauncherIfExternal() { @@ -357,7 +369,13 @@ public class LauncherProvider extends ContentProvider { addModifiedTime(values); SQLiteDatabase db = mOpenHelper.getWritableDatabase(); - int count = db.update(args.table, values, args.where, args.args); + int count; + try { + count = db.update(args.table, values, args.where, args.args); + } catch (SQLiteFullException e) { + Log.e(TAG, "Could not update database", e); + count = 0; + } if (count > 0) notifyListeners(); reloadLauncherIfExternal(); |