objectbox-dart icon indicating copy to clipboard operation
objectbox-dart copied to clipboard

Bad state: failed to create store: Cannot open store: another store

Open centy opened this issue 10 months ago • 3 comments
trafficstars

Build info

  • objectbox version:"4.0.3"
  • Flutter/Dart version: Flutter: 3.27.0 Dart SDK version: 3.6.0
  • Build OS: [Windows 10 ]

Steps to reproduce

Getting such callstack on Crashlitics.

Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: Bad state: failed to create store: Cannot open store: another store is still open using the same path: "/data/data/com.gst.color.numbers.pixyfy/app_flutter/objectbox" (OBX_ERROR code 10001) at ObjectBoxNativeError.throwMapped(helpers.dart:74) at .throwLatestNativeError(helpers.dart:54) at .checkObxPtr(helpers.dart:31) at Store._checkStorePointer(store.dart:451) at .new Store(store.dart:274) at .openStore(objectbox.g.dart:271) at PictureInfoRepository.performOpen(picture_info_repository.dart:164)

We are initializing DB in main functon.

Scerario look more less like this:

  1. User start app and it works
  2. App show ad
  3. Ad became closed and app is back again --> database is locked

I can not reproduce that, some additional conditions must occurs. This what we see in crashlitics

Expected behavior

Do not crash or some workaround

Actual behavior

App not starting

centy avatar Dec 23 '24 19:12 centy

Thanks for reporting!

TL;DR: see #436 for a possible workaround.

A little background: the ObjectBox database runs on the process level. Only some state lives in the Dart VM, but otherwise calls are made to the native implementation.

Somehow it appears that the Dart state can be cleared (e.g. the Dart app terminates) without the native process ending, leaving the ObjectBox database open.

I wonder if using something like an AppLifecycleListener and then opening and closing the database when leaving or entering the detached state would solve this?

(internal issue objectbox-dart#67)

greenrobot-team avatar Jan 13 '25 09:01 greenrobot-team

I just wondering if it is possible to detect this case and attach to running instance?

centy avatar Jan 20 '25 17:01 centy

I've linked the issue with exactly that workaround:

TL;DR: see https://github.com/objectbox/objectbox-dart/issues/436 for a possible workaround.

Here is the direct link: https://github.com/objectbox/objectbox-dart/issues/436#issuecomment-1219356368

greenrobot-team avatar Jan 21 '25 06:01 greenrobot-team

Closing this issue due to inactivity. :zzz: Feel free to comment with more details or submit a new issue.

greenrobot-team avatar Sep 10 '25 04:09 greenrobot-team