kermitt2 / biblio-glutton

A high performance bibliographic information service: https://biblio-glutton.readthedocs.io
125 stars 16 forks source link

Error during startup of jar service #80

Closed steppo83 closed 3 weeks ago

steppo83 commented 2 years ago

Hi, I have java 1.8 installed on my machine that has Windows 10 64 bit, doing a java -version from cmd: java version "1.8.0_341" Java(TM) SE Runtime Environment (build 1.8.0_341-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.341-b10, mixed mode)

If I try to startup the service via the command java -jar build/libs/lookup-service-0.2-onejar.jar server I receive an error says:

20:43:03.085 [main] INFO com.scienceminer.lookup.configuration.LookupConfiguration - Found conf path: D:\grobid-biblio-glutton\biblio-glutton\lookup\..\config\glutton.yml
20:43:03.085 [main] INFO com.scienceminer.lookup.configuration.LookupConfiguration - Running with default arguments: "server" "D:\grobid-biblio-glutton\biblio-glutton\lookup\..\config\glutton.yml"
INFO  [2022-09-27 20:43:04,351] io.dropwizard.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
INFO  [2022-09-27 20:43:04,351] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
WARN  [2022-09-27 20:43:04,757] com.squarespace.jersey2.guice.JerseyGuiceUtils: Unavailable to load class in order to validate module: name=com.hubspot.dropwizard.guicier.GuiceBundle$$Lambda$68/117052390
WARN  [2022-09-27 20:43:04,757] com.squarespace.jersey2.guice.JerseyGuiceUtils: Unavailable to load class in order to validate module: name=com.hubspot.dropwizard.guicier.GuiceBundle$$Lambda$68/117052390
com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.IllegalArgumentException: Unknown result code 112
  at com.scienceminer.lookup.web.resource.DataController.<init>(DataController.java:32)
  at com.scienceminer.lookup.web.module.LookupServiceModule.configure(LookupServiceModule.java:25) (via modules: com.google.inject.util.Modules$CombinedModule -> com.scienceminer.lookup.web.module.LookupServiceModule)
  while locating com.scienceminer.lookup.web.resource.DataController
Caused by: java.lang.IllegalArgumentException: Unknown result code 112
        at org.lmdbjava.ResultCodeMapper.checkRc(ResultCodeMapper.java:111)
        at org.lmdbjava.Env$Builder.open(Env.java:495)
        at org.lmdbjava.Env$Builder.open(Env.java:512)
        at com.scienceminer.lookup.storage.StorageEnvFactory.getEnv(StorageEnvFactory.java:36)
        at com.scienceminer.lookup.storage.lookup.IstexIdsLookup.<init>(IstexIdsLookup.java:53)
        at com.scienceminer.lookup.storage.DataEngine.<init>(DataEngine.java:28)
        at com.scienceminer.lookup.web.resource.DataController.<init>(DataController.java:34)
        at com.scienceminer.lookup.web.resource.DataController$$FastClassByGuice$$209adf9e.newInstance(<generated>)
        at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
        at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
        at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
        at com.hubspot.dropwizard.guicier.DropwizardModule$1.onProvision(DropwizardModule.java:37)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
        at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:92)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:84)
        at com.hubspot.dropwizard.guicier.GuiceBundle$Builder.lambda$new$0(GuiceBundle.java:148)
        at com.hubspot.dropwizard.guicier.InjectorFactory.create(InjectorFactory.java:12)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:102)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:33)
        at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:200)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:42)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
        at io.dropwizard.cli.Cli.run(Cli.java:78)
        at io.dropwizard.Application.run(Application.java:93)
        at com.scienceminer.lookup.web.LookupServiceApplication.main(LookupServiceApplication.java:185)

2) Error injecting constructor, java.lang.IllegalArgumentException: Unknown result code 112
  at com.scienceminer.lookup.web.resource.LookupController.<init>(LookupController.java:50)
  at com.scienceminer.lookup.web.module.LookupServiceModule.configure(LookupServiceModule.java:24) (via modules: com.google.inject.util.Modules$CombinedModule -> com.scienceminer.lookup.web.module.LookupServiceModule)
  while locating com.scienceminer.lookup.web.resource.LookupController
Caused by: java.lang.IllegalArgumentException: Unknown result code 112
        at org.lmdbjava.ResultCodeMapper.checkRc(ResultCodeMapper.java:111)
        at org.lmdbjava.Env$Builder.open(Env.java:495)
        at org.lmdbjava.Env$Builder.open(Env.java:512)
        at com.scienceminer.lookup.storage.StorageEnvFactory.getEnv(StorageEnvFactory.java:36)
        at com.scienceminer.lookup.storage.lookup.IstexIdsLookup.<init>(IstexIdsLookup.java:53)
        at com.scienceminer.lookup.storage.LookupEngine.<init>(LookupEngine.java:58)
        at com.scienceminer.lookup.web.resource.LookupController.<init>(LookupController.java:53)
        at com.scienceminer.lookup.web.resource.LookupController$$FastClassByGuice$$df09476e.newInstance(<generated>)
        at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
        at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
        at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
        at com.hubspot.dropwizard.guicier.DropwizardModule$1.onProvision(DropwizardModule.java:37)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
        at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:92)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:84)
        at com.hubspot.dropwizard.guicier.GuiceBundle$Builder.lambda$new$0(GuiceBundle.java:148)
        at com.hubspot.dropwizard.guicier.InjectorFactory.create(InjectorFactory.java:12)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:102)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:33)
        at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:200)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:42)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
        at io.dropwizard.cli.Cli.run(Cli.java:78)
        at io.dropwizard.Application.run(Application.java:93)
        at com.scienceminer.lookup.web.LookupServiceApplication.main(LookupServiceApplication.java:185)

3) Error injecting constructor, java.lang.IllegalArgumentException: Unknown result code 112
  at com.scienceminer.lookup.web.resource.OAController.<init>(OAController.java:27)
  at com.scienceminer.lookup.web.module.LookupServiceModule.configure(LookupServiceModule.java:26) (via modules: com.google.inject.util.Modules$CombinedModule -> com.scienceminer.lookup.web.module.LookupServiceModule)
  while locating com.scienceminer.lookup.web.resource.OAController
Caused by: java.lang.IllegalArgumentException: Unknown result code 112
        at org.lmdbjava.ResultCodeMapper.checkRc(ResultCodeMapper.java:111)
        at org.lmdbjava.Env$Builder.open(Env.java:495)
        at org.lmdbjava.Env$Builder.open(Env.java:512)
        at com.scienceminer.lookup.storage.StorageEnvFactory.getEnv(StorageEnvFactory.java:36)
        at com.scienceminer.lookup.storage.lookup.IstexIdsLookup.<init>(IstexIdsLookup.java:53)
        at com.scienceminer.lookup.storage.LookupEngine.<init>(LookupEngine.java:58)
        at com.scienceminer.lookup.web.resource.OAController.<init>(OAController.java:30)
        at com.scienceminer.lookup.web.resource.OAController$$FastClassByGuice$$b9fbe1a6.newInstance(<generated>)
        at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
        at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
        at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
        at com.hubspot.dropwizard.guicier.DropwizardModule$1.onProvision(DropwizardModule.java:37)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
        at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:92)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:84)
        at com.hubspot.dropwizard.guicier.GuiceBundle$Builder.lambda$new$0(GuiceBundle.java:148)
        at com.hubspot.dropwizard.guicier.InjectorFactory.create(InjectorFactory.java:12)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:102)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:33)
        at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:200)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:42)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
        at io.dropwizard.cli.Cli.run(Cli.java:78)
        at io.dropwizard.Application.run(Application.java:93)
        at com.scienceminer.lookup.web.LookupServiceApplication.main(LookupServiceApplication.java:185)

4) Error injecting constructor, java.lang.IllegalArgumentException: Unknown result code 112
  at com.scienceminer.lookup.web.resource.OaIstexController.<init>(OaIstexController.java:27)
  at com.scienceminer.lookup.web.module.LookupServiceModule.configure(LookupServiceModule.java:27) (via modules: com.google.inject.util.Modules$CombinedModule -> com.scienceminer.lookup.web.module.LookupServiceModule)
  while locating com.scienceminer.lookup.web.resource.OaIstexController
Caused by: java.lang.IllegalArgumentException: Unknown result code 112
        at org.lmdbjava.ResultCodeMapper.checkRc(ResultCodeMapper.java:111)
        at org.lmdbjava.Env$Builder.open(Env.java:495)
        at org.lmdbjava.Env$Builder.open(Env.java:512)
        at com.scienceminer.lookup.storage.StorageEnvFactory.getEnv(StorageEnvFactory.java:36)
        at com.scienceminer.lookup.storage.lookup.IstexIdsLookup.<init>(IstexIdsLookup.java:53)
        at com.scienceminer.lookup.storage.LookupEngine.<init>(LookupEngine.java:58)
        at com.scienceminer.lookup.web.resource.OaIstexController.<init>(OaIstexController.java:30)
        at com.scienceminer.lookup.web.resource.OaIstexController$$FastClassByGuice$$7e26d64f.newInstance(<generated>)
        at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
        at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:33)
        at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:95)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
        at com.hubspot.dropwizard.guicier.DropwizardModule$1.onProvision(DropwizardModule.java:37)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
        at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:92)
        at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:84)
        at com.hubspot.dropwizard.guicier.GuiceBundle$Builder.lambda$new$0(GuiceBundle.java:148)
        at com.hubspot.dropwizard.guicier.InjectorFactory.create(InjectorFactory.java:12)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:102)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:33)
        at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:200)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:42)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
        at io.dropwizard.cli.Cli.run(Cli.java:78)
        at io.dropwizard.Application.run(Application.java:93)
        at com.scienceminer.lookup.web.LookupServiceApplication.main(LookupServiceApplication.java:185)

4 errors
        at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
        at com.google.inject.Guice.createInjector(Guice.java:99)
        at com.google.inject.Guice.createInjector(Guice.java:84)
        at com.hubspot.dropwizard.guicier.GuiceBundle$Builder.lambda$new$0(GuiceBundle.java:148)
        at com.hubspot.dropwizard.guicier.InjectorFactory.create(InjectorFactory.java:12)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:102)
        at com.hubspot.dropwizard.guicier.GuiceBundle.run(GuiceBundle.java:33)
        at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:200)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:42)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:87)
        at io.dropwizard.cli.Cli.run(Cli.java:78)
        at io.dropwizard.Application.run(Application.java:93)
        at com.scienceminer.lookup.web.LookupServiceApplication.main(LookupServiceApplication.java:185)

Can you help me? @lfoppiano any ideas?

Thanks!

lfoppiano commented 2 years ago

Hi @steppo83 the error is a bit cryptic as it comes from the LDMB database 😓 , are you using an already filled up database or an empty one? One important thing about LMDB, the database is not portable by OS, so if you populate it in an OS it cannot be open in another.

Could you try to run it with an empty data/db directory (You could just change the file config/glutton.yml and modify the parameter storage, usually the directory are created if they don't exist)?

steppo83 commented 2 years ago

Hi @lfoppiano, I can add that I tried to start jar server during the importing into the LMDB, could be that 😓

Now I'm importing into the LMDB, as soon as this phase will be completed, I'll try to start again the server. I'll let you know.

Thanks!

steppo83 commented 2 years ago

Hi again :) I tried on another VM, just clone the repo and start the jar file as a server with an empty data/db directory, same error :(

steppo83 commented 2 years ago

Last but not least, regarding this:

One important thing about LMDB, the database is not portable by OS, so if you populate it in an OS it cannot be open in another.

So how you can use a docker container having this limitation? I suppose that one docker container has to be used for the server and another one for the import of crossref dump...and what about the index? A new container? I'm a bit confused...

lfoppiano commented 2 years ago

Hi again :) I tried on another VM, just clone the repo and start the jar file as a server with an empty data/db directory, same error :(

This is a Windows VM?

steppo83 commented 2 years ago

Yes, is a Windows 10 64 bit VM (Azure) but I also tried on my pc that has Windows 10 64 bit as well, same error.

lfoppiano commented 2 years ago

ahhh... 🤔

It's very hard to figure out what is wrong without Windows..

Stupid question: The path in the config file you sent me via email is with the slash: data/db, does that work on windows or these should be reverted to backslash data\db ?

steppo83 commented 2 years ago

I tried to put: data\db \data\db \data\db\

Same error. One interesting thing is that if I comment the storage setting inside the glutton .yml file, the error is the same (meaning that code doesn't come there to get the value of the setting I suppose), if I remove the yml file, I receive an error saying that the glutton.yml is not found (which is right).

steppo83 commented 2 years ago

To avoid this problem I did in this way:

lfoppiano commented 3 weeks ago

I close as completed, feel free to reopen or comment if any related issue reappears