Stardog 7 on Windows

Hi,

From Home | Stardog Documentation Latest I learnt that Stardog 7 is not supported as a local installation on Windows:

For Windows users, Stardog 7 is supported by running within a Docker container.

So as advised, I pulled the docker image

docker pull stardog/stardog:latest
docker run -it -v C:\Users\Sander\Stardog-Docker:/var/opt/stardog stardog/stardog

(Note that you may wish to update Stardog Cloud | Stardog, the second command listed there does not end with stardog/stardog.)

When starting the Stardog docker container this way, I get 45 errors. I'm pasting the last one here, since they didn't all fit on my terminal window, and at least the last few are the same errors anyway:

45) Error in custom provider, java.io.IOException: IO error: While fsync: a directory: Invalid argument
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getStorageKernel(RocksIndexModule.java:75) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getStorageKernel(RocksIndexModule.java:75) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  while locating com.stardog.starrocks.NativeStorageKernel
    for parameter 0 at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getTransactionStore(RocksIndexModule.java:67)
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getTransactionStore(RocksIndexModule.java:67) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getTransactionStore(RocksIndexModule.java:67) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  while locating com.complexible.mvcc.api.MutableTransactionStore
    for parameter 1 at com.complexible.mvcc.impl.oracle.SimpleOracle.<init>(SimpleOracle.java:47)
  while locating com.complexible.mvcc.impl.oracle.SimpleOracle
  at com.complexible.stardog.index.mvcc.MvccModule.configure(MvccModule.java:29) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.mvcc.MvccModule)
  while locating com.complexible.mvcc.api.oracle.TransactionOracle
    for parameter 5 at com.complexible.stardog.index.io.IndexIO.<init>(IndexIO.java:239)
  at com.complexible.stardog.index.IndexModule.configure(IndexModule.java:35) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule)
  while locating com.complexible.stardog.index.io.IndexIO
    for parameter 4 at com.complexible.stardog.BaseStardogModule.getSystemIndex(BaseStardogModule.java:263)
  at com.complexible.stardog.BaseStardogModule.getSystemIndex(BaseStardogModule.java:263) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule)
  at com.complexible.stardog.BaseStardogModule.getSystemIndex(BaseStardogModule.java:263) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule)
  while locating com.complexible.stardog.index.Index annotated with @com.google.inject.name.Named(value=system.index)
  at com.complexible.stardog.virtual.MappingsStore.<init>(MappingsStore.java:48)
  while locating com.complexible.stardog.virtual.MappingsStore
    for parameter 1 at com.complexible.stardog.virtual.DefaultVirtualGraphRegistry.<init>(DefaultVirtualGraphRegistry.java:102)
  at com.complexible.stardog.virtual.DefaultVirtualGraphRegistry.class(DefaultVirtualGraphRegistry.java:68)
  while locating com.complexible.stardog.virtual.DefaultVirtualGraphRegistry
  at com.complexible.stardog.virtual.VirtualGraphModule.configure(VirtualGraphModule.java:29) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.virtual.VirtualGraphModule)
  while locating com.complexible.stardog.virtual.VirtualGraphRegistry annotated with @com.google.inject.name.Named(value=SecuredVirtualGraphRegistry.base)
    for parameter 0 at com.complexible.stardog.virtual.VirtualGraphService.<init>(VirtualGraphService.java:68)
  while locating com.complexible.stardog.virtual.VirtualGraphService
  at com.complexible.stardog.virtual.VirtualGraphModule.configure(VirtualGraphModule.java:25) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.virtual.VirtualGraphModule)
  while locating com.complexible.stardog.plan.eval.service.Service annotated with @com.google.inject.multibindings.Element(setName=,uniqueId=38, type=MULTIBINDER, keyType=)
  at com.complexible.stardog.docs.db.BitesDbModule.configure(BitesDbModule.java:26) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.docs.BitesModule -> com.complexible.stardog.docs.db.BitesDbModule -> com.google.inject.multibindings.Multibinder$RealMultibinder)
  while locating java.util.Set<com.complexible.stardog.plan.eval.service.Service>
    for parameter 0 at com.complexible.stardog.plan.eval.service.DefaultServiceRegistry.<init>(DefaultServiceRegistry.java:24)
  while locating com.complexible.stardog.plan.eval.service.DefaultServiceRegistry
  at com.complexible.stardog.BaseStardogModule.configure(BaseStardogModule.java:140) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule)
  while locating com.complexible.stardog.plan.eval.service.ServiceRegistry
    for parameter 20 at com.complexible.stardog.StardogKernel.<init>(StardogKernel.java:288)
  at com.complexible.stardog.StardogKernel.class(StardogKernel.java:288)
  while locating com.complexible.stardog.StardogKernel
  while locating com.complexible.stardog.Kernel
Caused by: java.io.IOException: IO error: While fsync: a directory: Invalid argument
        at com.stardog.starrocks.NativeStorageKernel.open(Native Method)
        at com.stardog.starrocks.NativeStorageKernel.open(NativeStorageKernel.java:243)
        at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getStorageKernel(RocksIndexModule.java:104)
        at com.complexible.stardog.index.disk.rocks.RocksIndexModule$$FastClassByGuice$$55110a28.invoke(<generated>)
        at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:272)
        at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:172)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
        at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
        at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104)
        at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104)
        at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:167)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
        at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
        at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104)
        at com.google.inject.spi.ProviderLookup$1.get(ProviderLookup.java:104)
        at com.google.inject.internal.ProviderMethod.get(ProviderMethod.java:167)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
        at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
        at com.complexible.stardog.virtual.MappingsStore.<init>(MappingsStore.java:49)
        at com.complexible.stardog.virtual.MappingsStore$$FastClassByGuice$$a492935c.newInstance(<generated>)
        at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
        at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
        at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:375)
        at com.google.inject.multibindings.Multibinder$RealMultibinder.get(Multibinder.java:258)
        at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
        at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.SingleParameterInjector.inject(SingleParameterInjector.java:38)
        at com.google.inject.internal.SingleParameterInjector.getAll(SingleParameterInjector.java:62)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:104)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:85)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.FactoryProxy.get(FactoryProxy.java:56)
        at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
        at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
        at com.complexible.stardog.Stardog.initKernel(Stardog.java:247)
        at com.complexible.stardog.Stardog.<init>(Stardog.java:235)
        at com.complexible.stardog.Stardog.<init>(Stardog.java:64)
        at com.complexible.stardog.Stardog$StardogBuilder.create(Stardog.java:653)
        at com.complexible.stardog.cli.impl.ServerStart.call(ServerStart.java:160)
        at com.complexible.stardog.cli.impl.ServerStart.call(ServerStart.java:42)
        at com.complexible.stardog.cli.CLIBase.execute(CLIBase.java:55)
        at com.complexible.stardog.cli.admin.CLI.main(CLI.java:197)

45 errors

I actually wanted to add to Stardog 7 on Windows 10 via Docker that I also couldn't run Stardog with Docker on Windows but I see that thread is closed.

I have a colleague that has a working docker image for stardog so I'll switch to using that for now.

Kind regards,

Sander

This is a weird problem wtih Docker on windows. The windows directory must be all lower case. If you can, try creating c:\stardog-data and using that

docker run -it -v c:\stardog-data:/var/opt/stardog stardog/stardog

Thank you for your reply. Sorry, that does not fix it, apparently.

You may want to check that your containers are running in Hyper-V mode and not Windows Server Containers.

Hii...,
When I installed Stardog on windows,I didn't get stardog-liecense key.bin file.
How do we get the liecence key?

Thanks..

Hi,

Since you're running via Docker, you can start up a container with an interactive terminal: docker run -it -p 5820:5820 stardog/stardog. When it doesn't find a license inside STARDOG_HOME, it will run you through a series of prompts to download one before starting up the server.

Thank you for posting that the second command on the Get Started page is missing stardog/stardog. Your comment let me get Stardog running!

Hi, I'm running in the same issue as Sander. I'm able to dowload the latest Stardog in Docker on my Windows 10 machine. I'm able to download the license via the command line, but after that's done, I get similar errors as Sander:

42) Error in custom provider, java.io.IOException: IO error: While fsync: a directory: Invalid argument
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getStorageKernel(RocksIndexModule.java:77) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getStorageKernel(RocksIndexModule.java:77) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  while locating com.stardog.starrocks.NativeStorageKernel
    for parameter 0 at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getTransactionStore(RocksIndexModule.java:68)
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getTransactionStore(RocksIndexModule.java:68) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  at com.complexible.stardog.index.disk.rocks.RocksIndexModule.getTransactionStore(RocksIndexModule.java:68) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.disk.rocks.RocksIndexModule)
  while locating com.complexible.mvcc.api.MutableTransactionStore
    for parameter 1 at com.complexible.mvcc.impl.oracle.SimpleOracle.<init>(SimpleOracle.java:49)
  while locating com.complexible.mvcc.impl.oracle.SimpleOracle
  at com.complexible.stardog.index.mvcc.MvccModule.configure(MvccModule.java:29) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule -> com.complexible.stardog.index.mvcc.MvccModule)
  while locating com.complexible.mvcc.api.oracle.TransactionOracle
    for parameter 5 at com.complexible.stardog.index.io.IndexIO.<init>(IndexIO.java:238)
  at com.complexible.stardog.index.IndexModule.configure(IndexModule.java:35) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule -> com.complexible.stardog.index.IndexModule)
  while locating com.complexible.stardog.index.io.IndexIO
    for parameter 4 at com.complexible.stardog.BaseStardogModule.getSystemIndex(BaseStardogModule.java:272)
  at com.complexible.stardog.BaseStardogModule.getSystemIndex(BaseStardogModule.java:272) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule)
  at com.complexible.stardog.BaseStardogModule.getSystemIndex(BaseStardogModule.java:272) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule)
  while locating com.complexible.stardog.index.Index annotated with @com.google.inject.name.Named(value=system.index)
  at com.complexible.stardog.virtual.MappingsStore.<init>(MappingsStore.java:48)
  while locating com.complexible.stardog.virtual.MappingsStore
    for parameter 1 at com.complexible.stardog.virtual.DefaultVirtualGraphRegistry.<init>(DefaultVirtualGraphRegistry.java:92)
  at com.complexible.stardog.virtual.DefaultVirtualGraphRegistry.class(DefaultVirtualGraphRegistry.java:65)
  while locating com.complexible.stardog.virtual.DefaultVirtualGraphRegistry
  at com.complexible.stardog.virtual.VirtualGraphModule.configure(VirtualGraphModule.java:32) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.virtual.VirtualGraphModule)
  while locating com.complexible.stardog.virtual.VirtualGraphRegistry annotated with @com.google.inject.name.Named(value=SecuredVirtualGraphRegistry.unsecured)
    for parameter 0 at com.complexible.stardog.virtual.VirtualGraphService.<init>(VirtualGraphService.java:68)
  while locating com.complexible.stardog.virtual.VirtualGraphService
  at com.complexible.stardog.virtual.VirtualGraphModule.configure(VirtualGraphModule.java:25) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.virtual.VirtualGraphModule)
  while locating com.complexible.stardog.plan.eval.service.Service annotated with @com.google.inject.multibindings.Element(setName=,uniqueId=21, type=MULTIBINDER, keyType=)
  at com.complexible.stardog.virtual.VirtualGraphModule.configure(VirtualGraphModule.java:25) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.virtual.VirtualGraphModule -> com.google.inject.multibindings.Multibinder$RealMultibinder)
  while locating java.util.Set<com.complexible.stardog.plan.eval.service.Service>
    for parameter 0 at com.complexible.stardog.plan.eval.service.DefaultServiceRegistry.<init>(DefaultServiceRegistry.java:24)
  while locating com.complexible.stardog.plan.eval.service.DefaultServiceRegistry
  at com.complexible.stardog.BaseStardogModule.configure(BaseStardogModule.java:149) (via modules: com.google.inject.util.Modules$OverrideModule -> com.complexible.stardog.BaseStardogModule)
  while locating com.complexible.stardog.plan.eval.service.ServiceRegistry
    for parameter 20 at com.complexible.stardog.StardogKernel.<init>(StardogKernel.java:299)
  at com.complexible.stardog.StardogKernel.class(StardogKernel.java:299)
  while locating com.complexible.stardog.StardogKernel
  while locating com.complexible.stardog.Kernel
Caused by: java.io.IOException: IO error: While fsync: a directory: Invalid argument
        at com.stardog.starrocks.NativeStorageKernel.open(Native Method)
...

Can you verify that it's not on a CIFS mounted directory?

Hi Zachary,
I'm no expert, but I don't think so. It's a regular folder on my personal computer. How can I recognize it as such?

I simply start launch Stardog using
docker run -it -v C:\Users\username\stardog-home:/var/opt/stardog stardog/stardog
(I doesn't makes a difference if I use non-capital letters in the folder path or not)

Is it possible that Stardog is confused by windows env variables (PATH and STARDOG_HOME) for older Stardog versions that could be installed natively on Windows? I removed the PATH var and adjusted the STARDOG_HOME var to C:\Users\username\stardog-home\data, but I still get the same errors

You can also try the path in all lower case c:\users\username\stardog-home\data I'm going off reports of similar problems with other projects using windows and docker.

I already tried lower case in the windows path, without avail. I'm just a bit confused now about the location of STARDOG_HOME variable (which is the same path as when you start Stardog via Docker). In the versions before v7, I used to enter C:\Users\username\stardog-home\data, but I notice the "data" folder is created automatically when downloading the license, thus it should probably be C:\Users\username\stardog-home?

However, I tried all combinations (regular path and lower case path + stardog-home and stardog-home\data) without success. Would really be good if someone from Stardog could look into this, as it's pretty annoying

I'm not quite sure what you mean here. Environment variables are passed to containers with the -e argument, so if you aren't doing that the container shouldn't know anything about the environment variable.

I don't remember how long Windows has supported Docker but I think there are some still some gotchas which is what I think you're running into here.

If you're running it on your personal computer it's probably not a CIFS mount unless you're running a home NAS but you'd know it if you were so you're probably good.

I know (edit: I found it out in the mean time :slight_smile:) , but I was just wondering which Windows folder (C:\Users\username\stardog-home or C:\Users\username\stardog-home\data), should be binding to Docker. I just remembered that before v7, when Windows was still supported, the STARDOG_HOME env variable pointed to the data folder.

I'm still able to use Docker with other containers, binding to a folder on my Windows PC..

This is specifically a problem it seems with rocksdb, docker, linux containers, and windows filesystems. The easiest way to work around the issue is to let the stardog_home folder just live on the docker container itself instead of mounting a volume from the windows host. You should be able to docker cp the directory back and forth to keep it in sync.

Hi Stephen, thanks for the reply. I'm still learning about Docker, so I might miss some things here and there. As far as I found, I think I first need a running Stardog container, before I can copy the stardog-home folder from my Windows to a virtual folder (the docker cp command needs the container id)?
docker cp "C:\Users\username\stardog-home" mycontainerid:/var/opt/stardog

Woops, just noticed I simply need to download the license directly to the Docker container as such. It's working now! Thanks :slight_smile:

Hmm, I cheered to early. I'm able to copy the Docker stardog-home folder of the running Stardog container to my Windows stardog-home. When I restart the Docker container, there's nothing in the Stardog Docker folder so it asks again for a license (probably will have to do this everytime again when starting the Docker container again). I download the license again, server starts correctly. When I then docker cp back from my windows stardog-home folder to the Docker stardog-home folder, I do not see the database made in the earlier session appearing in Stardog Studio. I checked if the old database was correctly copied in the Docker stardog-home, and it is there (I checked by copying again from Docker to Windows, and I can see the database in the data folder).

Any ideas on what's going wrong?

I believe this is because you're starting up a new container, and then after copying over the stardog home, the server doesn't see it because it already started with the new empty one.

Once you stop your container, instead of trying docker run again, try looking in docker ps -a to see your stopped containers, docker cp your stardog home to the stopped one, and then docker start it back up