Apple M1 chip throws "Function not implemented"

So I just got my new Macbook Air with the new M1 Chip. So far, everything works for my project (all run via Docker) EXCEPT for Eventstore.

I’m going to assume this is due to the M1 Chip still being in public preview for Docker, but I figured I would put my issue here in case either 1). That’s a wrong assumption or 2). This can be easily fixed in the docker image.

Basically, when the eventstore docker container starts up, it automatically fails with the following error/log
Host terminated unexpectedly.

System.IO.IOException: Function not implemented

at System.IO.FileSystemWatcher.StartRaisingEvents()

at System.IO.FileSystemWatcher.StartRaisingEventsIfNotDisposed()

at System.IO.FileSystemWatcher.set_EnableRaisingEvents(Boolean value)

at Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.TryEnableFileSystemWatcher()

at Microsoft.Extensions.FileProviders.Physical.PhysicalFilesWatcher.CreateFileChangeToken(String filter)

at Microsoft.Extensions.FileProviders.PhysicalFileProvider.Watch(String filter)

at Microsoft.Extensions.Configuration.FileConfigurationProvider.<.ctor>b__1_0()

at Microsoft.Extensions.Primitives.ChangeToken.ChangeTokenRegistration`1..ctor(Func`1 changeTokenProducer, Action`1 changeTokenConsumer, TState state)

at Microsoft.Extensions.Primitives.ChangeToken.OnChange(Func`1 changeTokenProducer, Action changeTokenConsumer)

at Microsoft.Extensions.Configuration.FileConfigurationProvider..ctor(FileConfigurationSource source)

at Microsoft.Extensions.Configuration.Json.JsonConfigurationSource.Build(IConfigurationBuilder builder)

at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()

at EventStore.Common.Log.EventStoreLoggerConfiguration.Initialize(String logsDirectory, String componentName, String logConfig) in /build/src/EventStore.Common/Log/EventStoreLoggerConfiguration.cs:line 58

at EventStore.Core.EventStoreHostedService`1.Init(TOptions options) in /build/src/EventStore.Core/EventStoreHostedService.cs:line 89

at EventStore.ClusterNode.ClusterVNodeHostedService.Init(ClusterNodeOptions options) in /build/src/EventStore.ClusterNode/ClusterVNodeHostedService.cs:line 44

at EventStore.Core.EventStoreHostedService`1..ctor(String[] args) in /build/src/EventStore.Core/EventStoreHostedService.cs:line 45

at EventStore.ClusterNode.ClusterVNodeHostedService..ctor(String[] args) in /build/src/EventStore.ClusterNode/ClusterVNodeHostedService.cs:line 35

at EventStore.ClusterNode.Program.Main(String[] args) in /build/src/EventStore.ClusterNode/Program.cs:line 22

I guess I’m wondering if I should just chalk it up to the chip, or if I should dig some more. I have the same docker-compose file that works on multiple machines, except my new macbook air

Thanks for the report @jacobturley
We need to check that a bit more internally before having a definite answer.
But it seems it’s indeed due to Dockers support for M1 .

So docker responded to my ticket on the docket side. They pretty much said they have done their best to be able to support different archs(eventstore being built for Linux-amd64, but running on arm64) but sometimes it just doesn’t work. So, they essentially just said that the solution was for eventstore to have a native arm64 image. Which makes sense.

Not sure if this is something you guys can look into, or if it’s even possible currently due to grpc potentially having some issues with arm64(though it seems that is in a better spot now)

is that ticket you mentioned available publicly ?
At the moment, there is no ARM build .

Well someone just tried to build on ARM , but still having issue with grpc ,

The GRPC team does seem to have woken up the issue though :

Yeah, more specifically this issue:

It looks like they’ve made some progress, i.e. wheel support, but not sure what all needs to be there before it’s usable on arm64.

For example, their comment here:

So, there’s basically a chance it may work. But also may not.

we’ll keep an eye on it: