Baseflow / Baseflow/flutter_cache_manager

Getting a DatabaseException on startup: (database is locked (code 5 SQLITE_BUSY[5]))

オープン
#429 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る
主要言語
Dart
スター
809
フォーク
510
平均マージ
6分
マージ済み PR(30日)
1

説明

## 🐛 Bug Report

Hi, I'm having a DatabaseException on the application's first load, when it tries to setup the database for the cache. The cache stays unusable for this first load, but the second time the application is opened it can work this out and then it will continue working every time.

This is a logcat output from Android:

```
09-05 16:18:26.154 19280 19371 I flutter : error DatabaseException(database is locked (code 5 SQLITE_BUSY[5])) sql 'BEGIN EXCLUSIVE' args [] during open, closing...
09-05 16:18:26.165 19280 19371 E flutter : [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DatabaseException(database is locked (code 5 SQLITE_BUSY[5])) sql 'BEGIN EXCLUSIVE' args []
09-05 16:18:26.165 19280 19371 E flutter : #0 wrapDatabaseException (package:sqflite/src/exception_impl.dart:11)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #1 SqfliteDatabaseMixin.txnSynchronized (package:sqflite_common/src/database_mixin.dart:465)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #2 SqfliteDatabaseMixinExt.txnBeginTransaction (package:sqflite_common/src/database_mixin.dart:353)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #3 SqfliteDatabaseMixin.beginTransaction (package:sqflite_common/src/database_mixin.dart:719)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #4 SqfliteDatabaseMixinExt._txnTransaction (package:sqflite_common/src/database_mixin.dart:330)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #5 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #6 SqfliteDatabaseMixin.txnSynchronized (package:sqflite_common/src/database_mixin.dart:490)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #7 SqfliteDatabaseMixin.doOpen (package:sqflite_common/src/database_mixin.dart:939)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #8 SqfliteDatabaseOpenHelper.openDatabase (package:sqflite_common/src/database.dart:46)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #9 SqfliteDatabaseFactoryMixin.openDatabase. (package:sqflite_common/src/factory_mixin.dart:110)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #10 ReentrantLock.synchronized. (package:synchronized/src/reentrant_lock.dart:37)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #11 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:33)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #12 CacheObjectProvider.open (package:flutter_cache_manager/src/storage/cache_info_repositories/cache_object_provider.dart:30)
09-05 16:18:26.165 19280 19371 E flutter :
09-05 16:18:26.165 19280 19371 E flutter : #13 CacheStore._getCacheDataFromDatabase (package:flutter_cache_manager/src/cache_store.dart:112)
09-05 16:18:26.165 19280 19371 E flutter :
```

At the moment I only tried this on Android, and I'm using version 3.3.1.

My first guess is that some other library may be using Sqlite at the same time, or some other thing like that, but anyways that doesn't seems to be a good reason to crash. Is this issue known?

Thank you

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Reproduce the first-load failure on Android with version 3.3.1, then start from CacheObjectProvider.open in package:flutter_cache_manager/src/storage/cache_info_repositories/cache_object_provider.dart and CacheStore._getCacheDataFromDatabase in cache_store.dart. Trace the BEGIN EXCLUSIVE path through sqflite and determine why the cache database is locked during startup; done means the first load opens the cache without an unhandled SQLITE_BUSY exception.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
dart, flutter, sqlite
領域
databases, mobile-dev
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。