Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Unawaited cache-hit metadata update can surface iOS SQLite errors as unhandled

Offen
#535 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
68/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
dart

Rechercherichtung

Start in flutter_cache_manager/lib/src/cache_store.dart at CacheStore._getCacheDataFromDatabase and the unawaited _updateCacheDataInDatabase call. Review the repository updateOrInsert path, then create the isolated cache-hit test described in the issue with a failing update. Done means the metadata failure is observed or handled without an unhandled asynchronous exception while the cached file remains usable.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

🐛 Bug Report

An iOS production build reported an unhandled SqfliteDatabaseException while displaying a cached network image. SQLite returned code 14 ("unable to open database file") for an UPDATE cacheObject ... WHERE _id = ?. Sentry recorded handled: no via PlatformDispatcher.onError. Image URL, SQL arguments, and user/device identifiers are omitted.

This resembles #494. A distinct concern is the cache-hit path in CacheStore._getCacheDataFromDatabase: it calls _updateCacheDataInDatabase(data!) without awaiting or handling the returned Future. If that write fails, the error can escape independently of the image-loading error path. The call is still present on main: https://github.com/Baseflow/flutter_cache_manager/blob/main/flutter_cache_manager/lib/src/cache_store.dart#L120-L127

The reason iOS could not access the SQLite file in this event is unknown; this report focuses on the unhandled asynchronous update.

Expected behavior

A cache metadata write failure should not produce an unhandled asynchronous exception. The cache manager should handle or surface it through an observed error path while keeping a valid cached file usable where possible.

Reproduction steps

The device event was intermittent in production; I do not have a deterministic device reproduction. An isolated test could create a valid cached file and metadata record, make the repository's updateOrInsert throw, then call CacheStore.getFile after a memory-cache miss. The cache-hit metadata update's Future is currently left unobserved.

Observed stack excerpt:

wrapDatabaseException (sqflite_platform_interface/src/platform_exception.dart:12)
SqfliteDatabaseMixinExt._txnRawUpdateOrDelete (sqflite_common/src/database_mixin.dart)
BasicLock.synchronized (synchronized/src/basic_lock.dart)
SqfliteDatabaseMixin.txnSynchronized (sqflite_common/src/database_mixin.dart)
Configuration

Version: flutter_cache_manager 3.4.2; cached_network_image 4.0.0; sqflite_darwin 2.4.3+1

Platform:

  • 📱 iOS 18.6.2
  • 🤖 Android

Flutter 3.47.2 / Dart 3.13.2.

Vorherrschende Sprache
Dart
Sterne
814
Forks
513
Ø Merge
28 Min.
Gemergte PRs (30 T.)
12

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Baseflow/flutter_cache_manager

Alle Issues in Baseflow/flutter_cache_manager

Ähnliche Issues

Weitere Issues zu Dart

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.