Prevent crash

This commit is contained in:
M66B 2023-02-05 08:53:41 +01:00
parent c45e2f8709
commit 112f53ac13
1 changed files with 40 additions and 4 deletions

View File

@ -2846,11 +2846,47 @@ public abstract class DB extends RoomDatabase {
public void endTransaction() {
try {
super.endTransaction();
} catch (IllegalStateException ex) {
if ("Cannot perform this operation because there is no current transaction.".equals(ex.getMessage()))
Log.w(ex);
else
} catch (Throwable ex) {
String msg = ex.getMessage();
if (TextUtils.isEmpty(msg))
throw ex;
if (msg.contains("no current transaction")) {
// java.lang.IllegalStateException: Cannot perform this operation because there is no current transaction.
Log.w(ex);
return;
}
if (msg.contains("no transaction is active")) {
// Moto e plus - Android 9
/*
android.database.sqlite.SQLiteException: cannot rollback - no transaction is active (code 1 SQLITE_ERROR)
at android.database.sqlite.SQLiteConnection.nativeExecute(SQLiteConnection.java:-2)
at android.database.sqlite.SQLiteConnection.execute(SQLiteConnection.java:569)
at android.database.sqlite.SQLiteSession.endTransactionUnchecked(SQLiteSession.java:439)
at android.database.sqlite.SQLiteSession.endTransaction(SQLiteSession.java:401)
at android.database.sqlite.SQLiteDatabase.endTransaction(SQLiteDatabase.java:566)
at androidx.sqlite.db.framework.FrameworkSQLiteDatabase.endTransaction(FrameworkSQLiteDatabase:75)
at androidx.room.RoomDatabase.internalEndTransaction(RoomDatabase:594)
at androidx.room.RoomDatabase.endTransaction(RoomDatabase:584)
at eu.faircode.email.DB.endTransaction(DB:2842)
at androidx.room.paging.LimitOffsetDataSource.loadInitial(LimitOffsetDataSource:181)
at androidx.paging.PositionalDataSource.dispatchLoadInitial(PositionalDataSource:286)
at androidx.paging.TiledPagedList.<init>(TiledPagedList:107)
at androidx.paging.PagedList.create(PagedList:229)
at androidx.paging.PagedList$Builder.build(PagedList:388)
at androidx.paging.LivePagedListBuilder$1.compute(LivePagedListBuilder:206)
at androidx.paging.LivePagedListBuilder$1.compute(LivePagedListBuilder:171)
at androidx.lifecycle.ComputableLiveData$2.run(ComputableLiveData:110)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
*/
Log.w(ex);
return;
}
throw ex;
}
}