isar / isar/hive

HiveError: This should not happen.

Open
#960 1 comment 0 reactions 0 assignees View on GitHub
problem
Dominant language
Dart
Stars
4.4k
Forks
449
PR merge metrics
No merged PRs in 30d

Description

**Steps to Reproduce**
We load a light REDUX state on each startup of our app. Suddenly, without any specific issue, the load process failed and following exception is thrown.

```
E/flutter ( 6464): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: HiveError: This should not happen. Please open an issue on GitHub.
E/flutter ( 6464): #0 BinaryReaderImpl.readFrame (package:hive/src/binary/binary_reader_impl.dart:250)
E/flutter ( 6464): #1 FrameHelper.framesFromBytes (package:hive/src/binary/frame_helper.dart:21)
E/flutter ( 6464): #2 FrameIoHelper.framesFromFile (package:hive/src/io/frame_io_helper.dart:42)
E/flutter ( 6464):
E/flutter ( 6464): #3 StorageBackendVm.initialize (package:hive/src/backend/vm/storage_backend_vm.dart:86)
E/flutter ( 6464):
E/flutter ( 6464): #4 HiveImpl._openBox (package:hive/src/hive_impl.dart:111)
E/flutter ( 6464):
E/flutter ( 6464): #5 HiveImpl.openBox (package:hive/src/hive_impl.dart:139)
E/flutter ( 6464):
E/flutter ( 6464): #6 LocalPersistor.setup (package:maximiliana/core/redux/persistor.dart:23)
E/flutter ( 6464):
E/flutter ( 6464): #7 StoreService._init (package:maximiliana/core/services/store_service.dart:23)
E/flutter ( 6464):
E/flutter ( 6464): #8 StoreService.setup (package:maximiliana/core/services/store_service.dart:46)
E/flutter ( 6464):
E/flutter ( 6464): #9 StartupService._startCoreServices. (package:maximiliana/core/services/startup_service.dart:108)
E/flutter ( 6464):
```

**Code sample**
We manage persistence as follows:

```
class LocalPersistor extends Persistor {
static const String HIVE_APPSTATE_BOX = 'maximiliana-appstate';

static Future setup() async {
await Hive.initFlutter();
Hive.registerAdapter(ContactAdapter());
Hive.registerAdapter(AppStateAdapter());
Hive.registerAdapter(DeviceStatusAdapter());
Hive.registerAdapter(ExternalAppAdapter());
Hive.registerAdapter(AnswerSettingsAdapter());
Hive.registerAdapter(ContactsPolicyAdapter());

await Hive.openBox(HIVE_APPSTATE_BOX);
getLogger().v('[LOCAL PERSISTOR] Persistor is ready');
return LocalPersistor();
}

@override
Future deleteState() async {
await Hive.box(HIVE_APPSTATE_BOX).delete('appstate');
}

@override
Future persistDifference({
AppState lastPersistedState,
AppState newState,
}) async {
if (lastPersistedState == null || newState != lastPersistedState) {
await Hive.box(HIVE_APPSTATE_BOX).put('appstate', newState);
}
}

@override
Future readState() async {
return await Hive.box(HIVE_APPSTATE_BOX).get('appstate');
}
}
```

**Version**
- Platform: Android
- Flutter version: Flutter (Channel stable, 2.10.4, on macOS 12.3.1 21E258 darwin-arm, locale es-ES)
- Hive version: `^2.0.2` and `^1.0.0` (`hive_flutter`)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.