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

ObjectBox Admin Docker requires restart to see updated data on macOS

Open chirastefan opened this issue 7 months ago • 5 comments
trafficstars

Build info

  • objectbox version: 4.1.0 [✓] Flutter (Channel stable, 3.29.2, on macOS 15.3.2 24D81 darwin-arm64, locale en-US) [563ms] • Flutter version 3.29.2 • Upstream repository https://github.com/flutter/flutter.git • Framework revision c236373904 (12 days ago), 2025-03-13 16:17:06 -0400 • Engine revision 18b71d647a • Dart version 3.7.2 • DevTools version 2.42.3

Issue 1:

When saving data to DB I get the error below:

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: StorageException: failed to create transaction: Could not begin write transaction (22) (OBX_ERROR code 10199)
#0      ObjectBoxNativeError.throwMapped (package:objectbox/src/native/bindings/helpers.dart:99:11)
#1      throwLatestNativeError (package:objectbox/src/native/bindings/helpers.dart:54:48)
#2      checkObxPtr (package:objectbox/src/native/bindings/helpers.dart:31:5)
#3      new Transaction (package:objectbox/src/native/transaction.dart:33:5)
#4      Store._runInTransaction (package:objectbox/src/native/store.dart:782:32)
#5      InternalStoreAccess.runInTransaction (package:objectbox/src/native/store.dart:906:13)
#6      Box.put (package:objectbox/src/native/box.dart:104:34)
#7      Box._putAsyncCallback (package:objectbox/src/native/box.dart:113:22)
#8      _RunAsyncIsolateConfig.runCallback (package:objectbox/src/native/store.dart:971:51)
#9      Store._callFunctionWithStoreInIsolate (package:objectbox/src/native/store<…>

Issue 2

Happens from time to time.

#0      ObjectBoxNativeError.throwMapped (package:objectbox/src/native/bindings/helpers.dart:99:11)
#1      throwLatestNativeError (package:objectbox/src/native/bindings/helpers.dart:54:48)
#2      checkObxPtr (package:objectbox/src/native/bindings/helpers.dart:31:5)
#3      new Box._ (package:objectbox/src/native/box.dart:62:5)
#4      InternalBoxAccess.create (package:objectbox/src/native/box.dart:660:11)
#5      Store.box (package:objectbox/src/native/store.dart:601:44)
#6      new Box (package:objectbox/src/native/box.dart:54:37)
#7      new UserRepo (package:my_app/data/repos/user.repo.dart:10:47)
#8      App.build.<anonymous closure> (package:my_app/ui/app.dart:48:53)
#9      _CreateInheritedProviderState.value (package:provider/src/inherited_provider.dart:749:36)
#10     _InheritedProviderScopeElement.value (package:provider/src/inherited_provider.dart:603:33)
#11     Provider.of (package:provider/src/provider.dart:337:37)
#12     ReadContext.read (package:provider/src/provider.dart:683:21)
#13     App.build.<anonymous closure> (package:my_app/ui/app.dart:60:48)
#14     _CreateInheritedProviderState.value (package:provider/src/inherited_provider.dart:749:36)
#15     _InheritedProviderScopeElement.value (package:provider/src/inherited_provider.dart:603:33)
#16     Provider.of (package:provider/src/provider.dart:337:37)
#17     ReadContext.read (package:provider/src/provider.dart:683:21)
#18     _BlocBuilderBaseState.initState (package:flutter_bloc/src/bloc_builder.dart:152:36)
#19     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5860:55)
#20     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5709:5)
...     Normal element mounting (7 frames)
#27     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4555:16)
#28     MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:7178:36)
#29     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7194:32)
...     Normal element mounting (18 frames)
#47     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4555:16)
#48     Element.updateChild (package:flutter/src/widgets/framework.dart:4020:18)
#49     _LayoutBuilderElement._rebuildWithConstraints.updateChildCallback (package:flutter/src/widgets/layout_builder.dart:217:18)
#50     BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3056:19)
#51     _LayoutBuilderElement._rebuildWithConstraints (package:flutter/src/widgets/layout_builder.dart:240:12)
#52     RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2827:17)
#53     PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1161:15)
#54     RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2826:14)
#55     RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:293:5)
#56     _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:390:5)
#57     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#58     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:180:12)
#59     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1118:7)
#60     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:249:7)
#61     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:419:14)
#62     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#63     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#64     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#65     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#66     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1483:11)
#67     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#68     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:243:12)
#69     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#70     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#71     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#72     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#73     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#74     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#75     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#76     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#77     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#78     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#79     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#80     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:62:11)
#81     RenderStack._computeSize (package:flutter/src/rendering/stack.dart:646:43)
#82     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:673:12)
#83     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#84     ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:62:11)
#85     RenderStack._computeSize (package:flutter/src/rendering/stack.dart:646:43)
#86     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:673:12)
#87     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#88     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#89     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#90     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#91     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#92     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#93     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#94     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#95     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#96     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#97     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#98     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3748:14)
#99     RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#100    RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:115:18)
#101    RenderObject.layout (package:flutter/src/rendering/object.dart:2715:7)
#102    _RenderTheaterMixin.layoutChild (package:flutter/src/widgets/overlay.dart:1076:13)
#103    _RenderTheater.performLayout (package:flutter/src/widgets/overlay.dart:1422:9)
#104    RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2548:7)
#105    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1112:18)
#106    PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1125:15)
#107    RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:616:23)
#108    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1231:13)
#109    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:482:5)
#110    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1442:15)
#111    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1355:9)
#112    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1208:5)
#113    _invoke (dart:ui/hooks.dart:316:13)
#114    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:428:5)
#115    _drawFrame (dart:ui/hooks.dart:288:31)

Issue 3

I'm using ObjectBox Admin with objectbox-admin.sh and it works, but the data is not updated on browser refresh it gets updated only after I restart the script.

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Starting server on http://0.0.0.0:8081
001-19:11:28.9413 [INFO ] [SvHttp] Running in single-store mode, store path: /db
001-19:11:28.9418 [INFO ] [SvHttp] Listening on http://0.0.0.0:8081
001-19:11:28.9418 [INFO ] [SvHttp] User management: enabled
001-19:11:28.9464 [INFO ] [SvHttp] HttpServer listening on all interfaces, port 8081

Steps to reproduce it

The issue can be reproduced in this repo (it only happens from time to time)

  • clone the project
  • run flutter pub get
  • run dart run build_runner watch --delete-conflicting-outputs
  • tap on generate a single user or generate 100k users
  • tap on a user then on a team

chirastefan avatar Mar 25 '25 21:03 chirastefan

Thanks for reporting.

As for 1) please try to narrow down what code is causing this exception and then share it with us. Otherwise I'm not sure how to find the cause.

As for 2) in the linked repository I could not find a file package:my_app/data/repos/user.repo.dart. Also the actually thrown exception and message is required so we can tell you what the issue is.

As for 3) can you share where exactly you are running this script? From within a macOS 15.3.2 terminal or from within a Linux Docker container? I suspect that live updates only work when running the Admin Docker container on a Linux operating system (for example database files stored on Windows NTFS also do not support live updates.)

greenrobot-team avatar Mar 31 '25 08:03 greenrobot-team

  1. I run objectbox-admin.sh <path to the db folder> from my macos terminal

chirastefan avatar Mar 31 '25 18:03 chirastefan

@chirastefan Thanks, I updated the note at https://docs.objectbox.io/data-browser#run-via-docker that on macOS Admin also needs to be restarted to see updates.

Note: I labeled this issue with "more info required" so it will auto-close in a few days if there are no follow-up comments.

greenrobot-team avatar Apr 01 '25 05:04 greenrobot-team

@chirastefan Thanks, I updated the note at https://docs.objectbox.io/data-browser#run-via-docker that on macOS Admin also needs to be restarted to see updates.

Note: I labeled this issue with "more info required" so it will auto-close in a few days if there are no follow-up comments.

Do you have any plans to resolve this so there's no need for a restart?

chirastefan avatar Apr 11 '25 07:04 chirastefan

@chirastefan IIRC we briefly looked into this and it's an operating system issue (the Docker volume does not receive file update notifications) that at this time we are not sure how to resolve. If anyone has tips, they are welcome.

Note: I changed the title of this issue to reflect this is asking to fix this Admin issue.

Edit: for our reference, this is internal issue objectbox/objectbox#1101.

greenrobot-team avatar Apr 14 '25 06:04 greenrobot-team