Fatal Exception: android.database.sqlite.SQLiteCantOpenDatabaseException unable to open database file (code 14)
Fatal Exception: android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14) at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(SQLiteConnection.java) at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:768) at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652) at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107) at com.birbit.android.jobqueue.persistentQueue.sqlite.SqliteJobQueue.getNextJobDelayUntilNs(SqliteJobQueue.java:328) at com.birbit.android.jobqueue.cachedQueue.CachedJobQueue.getNextJobDelayUntilNs(CachedJobQueue.java:88) at com.birbit.android.jobqueue.JobManagerThread.getNextWakeUpNs(JobManagerThread.java:612) at com.birbit.android.jobqueue.JobManagerThread$1.onIdle(JobManagerThread.java:272) at com.birbit.android.jobqueue.messaging.PriorityMessageQueue.next(PriorityMessageQueue.java:89) at com.birbit.android.jobqueue.messaging.PriorityMessageQueue.consume(PriorityMessageQueue.java:36) at com.birbit.android.jobqueue.JobManagerThread.run(JobManagerThread.java:222) at java.lang.Thread.run(Thread.java:818)
#0. Crashed: job-manager: 0 0 0x0000000000000000 at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(SQLiteConnection.java) at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:768) at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652) at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107) at com.birbit.android.jobqueue.persistentQueue.sqlite.SqliteJobQueue.getNextJobDelayUntilNs(SqliteJobQueue.java:328) at com.birbit.android.jobqueue.cachedQueue.CachedJobQueue.getNextJobDelayUntilNs(CachedJobQueue.java:88) at com.birbit.android.jobqueue.JobManagerThread.getNextWakeUpNs(JobManagerThread.java:612) at com.birbit.android.jobqueue.JobManagerThread$1.onIdle(JobManagerThread.java:272) at com.birbit.android.jobqueue.messaging.PriorityMessageQueue.next(PriorityMessageQueue.java:89) at com.birbit.android.jobqueue.messaging.PriorityMessageQueue.consume(PriorityMessageQueue.java:36) at com.birbit.android.jobqueue.JobManagerThread.run(JobManagerThread.java:222) at java.lang.Thread.run(Thread.java:818)
#1. OkHttp ConnectionPool at java.lang.Object.wait(Object.java) at okhttp3.ConnectionPool$1.run(ConnectionPool.java:65) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818)
#2. main at android.os.MessageQueue.nativePollOnce(MessageQueue.java) at android.os.MessageQueue.next(MessageQueue.java:143) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:5938) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
weird :/. Any steps to reproduce ?
One of our users had a similar issue:
Fatal Exception: android.database.sqlite.SQLiteDatabaseCorruptException: file is encrypted or is not a database (code 26) at android.database.sqlite.SQLiteConnection.nativeExecuteForLong(SQLiteConnection.java) at android.database.sqlite.SQLiteConnection.executeForLong(SQLiteConnection.java:632) at android.database.sqlite.SQLiteSession.executeForLong(SQLiteSession.java:652) at android.database.sqlite.SQLiteStatement.simpleQueryForLong(SQLiteStatement.java:107) at com.birbit.android.jobqueue.persistentQueue.sqlite.SqliteJobQueue.countReadyJobs(SqliteJobQueue.java:235) at com.birbit.android.jobqueue.cachedQueue.CachedJobQueue.countReadyJobs(CachedJobQueue.java:71) at com.birbit.android.jobqueue.JobManagerThread.countReadyJobs(JobManagerThread.java:593) at com.birbit.android.jobqueue.JobManagerThread.countRemainingReadyJobs(JobManagerThread.java:579) at com.birbit.android.jobqueue.ConsumerManager.isAboveLoadFactor(ConsumerManager.java:176) at com.birbit.android.jobqueue.ConsumerManager.considerAddingConsumers(ConsumerManager.java:146) at com.birbit.android.jobqueue.ConsumerManager.onJobAdded(ConsumerManager.java:95) at com.birbit.android.jobqueue.JobManagerThread.handleAddJob(JobManagerThread.java:161) at com.birbit.android.jobqueue.JobManagerThread.access$100(JobManagerThread.java:35) at com.birbit.android.jobqueue.JobManagerThread$1.handleMessage(JobManagerThread.java:228) at com.birbit.android.jobqueue.messaging.PriorityMessageQueue.consume(PriorityMessageQueue.java:39) at com.birbit.android.jobqueue.JobManagerThread.run(JobManagerThread.java:222) at java.lang.Thread.run(Thread.java:761)
Sorry to say that I also don't have steps to reproduce, only the crash report.
@yigit
weird :/. Any steps to reproduce ?
I can reproduce if i recursively add jobs to the queue
On one thread I add 6 jobs to the queue, then those 6 jobs recursively add themselves back to the queue just before they complete. I then wait a bit and the SQLiteCantOpenDatabaseException on the JobManager throws.
Likely caused by too many open files. We see this as well for quite a few users.