Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Realm creates a pipe file, which cannot be created on an SD card formatted in FAT32 and mounted under Linux. #3485

Closed
embeddedmz opened this issue Dec 1, 2023 · 2 comments

Comments

@embeddedmz
Copy link

What happened?

I can't store the database on an SD card formatted in FAT32 because Realm creates a pipe/fifo and this cannot be created on an exFAT/FAT32 file system.

How can I disable this feature or ask Realm to use another location to create its fifo.

Repro steps

Use a FAT32 SD card on your GNU/Linux system to store the database

Version

6

What Atlas Services are you using?

Local Database only

What type of application is this?

Console/Server

Client OS and version

Ubuntu 18.04 LTS

Code snippets

No response

Stacktrace of the exception/crash you're getting

2023-11-29T22:00:12 0000007291 - EXC Microsoft.AspNetCore.Hosting.Diagnostics Application startup exception
Realms.Exceptions.RealmException: Failed to create fifo at '/media/sd/MMC Disk/DATA/Realm/ProjectDataStore.realm.note': Operation not permitted
2023-11-29T22:00:12 0000007383 - ERR Main APP CRASH Failed to create fifo at '/media/sd/MMC Disk/DATA/Realm/ProjectDataStore.realm.note': Operation not permitted terminatingTrue
2023-11-29T22:00:12 0000007395 - EXC  UnhandledException Realms.Exceptions.RealmException: Failed to create fifo at '/media/sd/MMC Disk/DATA/Realm/ProjectDataStore.realm.note': Operation not permitted: Failed to create fifo at '/media/sd/MMC Disk/DATA/Realm/ProjectDataStore.realm.note': Operation not permitted
   at Realms.NativeException.ThrowIfNecessary()
   at Realms.SharedRealmHandle.Open(Configuration configuration, RealmSchema schema, Byte[] encryptionKey)
   at Realms.RealmConfiguration.CreateHandle(RealmSchema schema)
   at Realms.RealmConfigurationBase.CreateRealm()
   at Realms.Realm.GetInstance(RealmConfigurationBase config)
   at Jlsa.Device.ProjectDataStoreRealm.RealmProjectDataDB_MonoThread.InitializeRealm() in D:\DevProjects\jlsa.device.projectdatastore\Jlsa.Device.ProjectDataStoreRealm\RealmProjectDataDB_MonoThread.cs:line 44
   at Jlsa.Device.ProjectDataStoreRealm.RealmProjectDataDB_MonoThread.<Initialize>b__10_0() in D:\DevProjects\jlsa.device.projectdatastore\Jlsa.Device.ProjectDataStoreRealm\RealmProjectDataDB_MonoThread.cs:line 83
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location where exception was thrown ---
   at Jlsa.Device.ProjectDataStoreRealm.RealmProjectDataDB_MonoThread.Exe[T](Func`1 fnc) in D:\DevProjects\jlsa.device.projectdatastore\Jlsa.Device.ProjectDataStoreRealm\RealmProjectDataDB_MonoThread.cs:line 37
   at Jlsa.Device.ProjectDataStoreRealm.RealmProjectDataDB_MonoThread.Initialize(String storeDir) in D:\DevProjects\jlsa.device.projectdatastore\Jlsa.Device.ProjectDataStoreRealm\RealmProjectDataDB_MonoThread.cs:line 83
   at Jlsa.Device.ProjectDataStore2.GenericProjectDataStore2.Initialize(String storeDir) in D:\DevProjects\Jlsa.Device.ProjectDataStore\Jlsa.Device.ProjectDataStore\GenericProjectDataStore2.cs:line 70
   at AdnServer.SignalR.SignalRServer.ProjectDataStore2Factory(IServiceProvider serviceProvider) in D:\DevProjects\adn2\Mobile\ADN\AdnServer\SignalR\SignalRServer.cs:line 63
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
   at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
   at AdnServer.SignalR.SignalRServer.Startup.Configure(IApplicationBuilder app, IWebHostEnvironment env) in D:\DevProjects\adn2\Mobile\ADN\AdnServer\SignalR\SignalRServer.cs:line 103
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

Relevant log output

No response

@nirinchev
Copy link
Member

You can use RealmConfiguration.FallbackPipePath and give it a location where pipes are creatable. That location doesn't need to be adjacent to the Realm file and the pipes will get removed once the Realm file is closed.

@nirinchev nirinchev self-assigned this Dec 1, 2023
@nirinchev
Copy link
Member

Closing the issue - feel free to reopen if that doesn't resolve it.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 11, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants