OHDSI Home | Forums | Wiki | Github

Fresh installation using BroadSea

Hello everybody.

I am new to the OHDSI platform and I am trying to setup a local OHDSI stack environment using BroadSea using postgresql as database.I have followed the guide provided in the BroadSea documentation page(https://github.com/OHDSI/Broadsea) and I get no error messages.

My questions:

  1. When I try to run the “Only as part of initial configuration:” step where I should run my edited source_source_daimon.sql, I get an error because there is no database in my postgres installation. Should I install a database independently of the dockerized procedure? I thought that maybe such a demo database would be included, however my postgres is empty.
  2. When I try to access ATLAS, after a long initialization (something like 30 seconds) I get a message saying “unable to connect to an instance of the webapi. please contact your administrator to resolve this issue.”. My WEBAPI_URL parameter points to the IP of the VM hosting docker. I have also tried using localhost. Is there something else I should check?
  3. When I try to access CALYPSO I get a 404 HTTP error. I saw in one of the OHDSI symposium videos someone saying that CALYPSO will eventually be integrated with ATLAS. Is this the reason of not finding CALYPSO’s HTTP endpoint?

Are there any suggestions for the above issues? Maybe there is a link in the ecosystem that could guide me in more detail.

Thank you in advance,
Pantelis Natsiavas

1 Like

Perhaps I posted it on the wrong forum? Should I post my questions on another forum or email list?

@pnatsiavas:

The Forum is all right. You probably need a little patients in the week after New Year. Folks are still in or digging out of vacation. If nobody answers, feel free to contact @lee_evans; @Frank or @Chris_Knoll.

@pnatsiavas Here are some responses to your list of questions:

  1. Did you manually create an empty postgresql database and a database user with permissions to create schemas/tables? Specify that database and user/password in the docker-compose.yml file. When the broadsea-webtools docker container is run for the first time it should automatically create the database schema that includes the source and source_daimon tables. Use a postgres SQL client (e.g. pgadmin) to verify you have a postgresql database and schema that includes those two tables. Also check to make sure that the schema name matches the schema name in your edited source_source_daimon.sql file. The default name for that schema (if you didn’t change it) is “ohdsi”.

Note. Another prerequisite to run the Broadsea OHDSI tools is a OMOP CDM Version 5 database schema populated with OMOP vocabulary & observational data. You will need to create and populate that database manually.
The default name for that schema is “cdm”.
The postresql CDM V5 DDL is here:

A 1k simulated patient CDM V5 dataset that you can load is here:

  1. Atlas needs the source and source_daimon tables to be populated correctly by the source_source_daimon.sql in order to connect to the database - so this error is probably due to the above issue.

  2. Yes. You can use the functionality in Atlas instead of Calypso.

Also, see the “troubleshooting” section at the below URL (scroll down the page) with information on how to review the logs inside the running Broadsea docker container:

@lee_evans

Thank you very much for your time to guide me during the platform’s installation process. Ιt is highly appreciated.

I have installed postgresql in my virtual machine hosting the docker image and created an empty database named OHDSI-CDMV5. I have also created a user ohdsi_stack_user with password ***, I have checked that the user has the right privileges to the specific database using phppgadmin and pgadmin. I have also created a schema called cdm under OHDSI-CDMV5 database where I created the CDMV5 tables using the respective DDL script. While I have not yet imported the CDMv5 vocabulary tables from OHDSI Athena web site and have not yet imported the 1k simulated patient CDM V5 dataset as you suggested (these need more time than I expected), I suppose that this should not be the problem since all the databases are there. I have also tried creating the ohdsi schema in the OHDSI-CDMV5 database manually. Still, I get the same error using ATLAS (“unable to connect to an instance of the webapi. please contact your administrator to resolve this issue.”) and I cannot see the expected table ohdsi.source_daimon.

Please note that when I start the docker container I get no error messages.

My docker-compose.yml is (interesting parts with bold)

version: ‘2’
services:
broadsea-methods-library:
image: ohdsi/broadsea-methodslibrary
ports:
- “8787:8787”
- “6311:6311”
broadsea-webtools:
image: ohdsi/broadsea-webtools
ports:
- “8080:8080”
volumes:
- .:/tmp/drivers/:ro
- .:/tmp/achilles-data-reports/:ro
environment:
- WEBAPI_URL=http://docker_IP:8080
- env=webapi-postgresql
- datasource.driverClassName=org.postgresql.Driver
- datasource.url=jdbc:postgresql://localhost/OHDSI-CDMV5
- datasource.cdm.schema=cdm
- datasource.ohdsi.schema=ohdsi
- datasource.username=ohdsi_stack_user
- datasource.password=****
- spring.jpa.properties.hibernate.default_schema=ohdsi
- spring.batch.repository.tableprefix=ohdsi.BATCH_
- flyway.datasource.driverClassName=org.postgresql.Driver
- flyway.datasource.url=jdbc:postgresql://localhost:5432/OHDSI-CDMV5
- flyway.schemas=ohdsi
- flyway.placeholders.ohdsiSchema=ohdsi
- flyway.datasource.username=ohdsi_stack_user
- flyway.datasource.password=***
- flyway.locations=classpath:db/migration/postgresql

I also thought that I should check atlas web application log files to search for errors that could provide for a hint.I tried searching in the atlas github repository for a logging mechanism but I can only find logging to the browser’s javascript console. In my browser’s console, I can see that the ATLAS application cannot contact the web api, as the error message suggests (console writes “http://docker_IP:8080/WebAPI/source/sources net::ERR_ADDRESS_UNREACHABLE”). Therefore, I am also wondering how can I be sure that I use the correct docker_IP. I have tested with “localhost” and the IPs shown using ifconfig (my server is ubuntu 16.04 and therefore there is nο docker toolbox available), with no luck.

Summarizing my questions:

  1. Do you see anything suspicious in my yml configuration? Do I miss anything?
  2. Is there any kind of log that I could check?
  3. Can I somehow confirm that I use the right IP address for the web API?

Thank you in advance,
Pantelis Natsiavas

@lee_evans

Somehow I got confused and missed to follow your instructions regarding the troubleshooting section. I see that you already provide a reference on checking the respective logging mechanism. Sorry for the confusion.

Messages that seem interesting in the respective error log (I truncate messages that seem trivial):

root@6982d54bc4b8:/var/log/supervisor# tail -1000 *stderr*
cp: cannot stat ‘/tmp/drivers/*jdbc*.jar’: No such file or directory
cp: cannot stat ‘/tmp/drivers/*JDBC*.jar’: No such file or directory
...
INFO: Deploying web application archive /usr/local/tomcat/webapps/WebAPI.war
Jan 07, 2017 3:22:19 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Jan 07, 2017 3:22:29 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebAPI]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1092)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1984)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'comparativeCohortAnalysisService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.ohdsi.webapi.source.SourceRepository org.ohdsi.webapi.service.AbstractDaoService.sourceRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sourceRepository': Cannot create inner bean '(inner bean)#49679e33' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#49679e33': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1202)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:321)
        at org.springframework.boot.context.web.SpringBootServletInitializer.run(SpringBootServletInitializer.java:117)
        at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:108)
        at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:68)
        at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5623)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
        ... 10 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.ohdsi.webapi.source.SourceRepository org.ohdsi.webapi.service.AbstractDaoService.sourceRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sourceRepository': Cannot create inner bean '(inner bean)#49679e33' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#49679e33': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
        ... 29 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sourceRepository': Cannot create inner bean '(inner bean)#49679e33' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#49679e33': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1469)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1127)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1051)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
        ... 31 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#49679e33': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108)
        at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:444)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1111)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1006)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299)
        ... 44 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/ohdsi/webapi/DataAccessConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1111)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1006)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
        ... 52 more
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.persistence.EntityManagerFactory]: Factory method 'entityManagerFactory' threw exception; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
        ... 61 more
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
        at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
        at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205)
        at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
        at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:852)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:845)
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:844)
        at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
        at org.ohdsi.webapi.DataAccessConfig.entityManagerFactory(DataAccessConfig.java:93)
        at org.ohdsi.webapi.DataAccessConfig$$EnhancerBySpringCGLIB$$2dadb894.CGLIB$entityManagerFactory$2(<generated>)
        at org.ohdsi.webapi.DataAccessConfig$$EnhancerBySpringCGLIB$$2dadb894$$FastClassBySpringCGLIB$$13b2b77e.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
        at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309)
        at org.ohdsi.webapi.DataAccessConfig$$EnhancerBySpringCGLIB$$2dadb894.entityManagerFactory(<generated>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162)
        ... 62 more

Jan 07, 2017 3:22:29 PM org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive /usr/local/tomcat/webapps/WebAPI.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebAPI]]
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:903)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1092)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1984)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
...
Jan 07, 2017 3:22:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/ROOT has finished in 43 ms
Jan 07, 2017 3:22:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/host-manager
Jan 07, 2017 3:22:30 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deployment of web application directory /usr/local/tomcat/webapps/host-manager has finished in 51 ms
Jan 07, 2017 3:22:30 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8080"]
Jan 07, 2017 3:22:31 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-apr-8009"]
Jan 07, 2017 3:22:31 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 18439 ms

Does the above provide a hint for what is going wrong?

Thank you once more,
Pantelis Natsiavas.

Hi @pnatsiavas

The problem is that the OHDSI webapi cannot connect to the postgresql database.

Try replacing all occurrences of “localhost” in your docker-compose.yml with the IP address of the machine where your postgresql database is running.

Lee

Yes, this error message is annoying, but the underlying reason is that a connection to the database failed and it couldn’t discover the the of database it was connecting to. I believe the way the system detect the database dialect is that it uses the connection string and then calls a JDBC api to get the server info directly from the server.

In later versions of webapi we’re going to force the config to specify the dialect directly.

-Chris

This was the solution. ATLAS seems to work fine. No data for vocabulary inserted yet (still on process) but ATLAS seems to be working fine.

Thank you very much. I really appreciate your time.

Pantelis

To add to the helpful thread above, I had to edit my Postgres configuration as well:

  • To allow connection to your database, add the following line to postgresql.conf
    listen_addresses = '*'
  • To pg_hba.conf add your host ip address
    host all all 10.18.35.xxx/32 trust
    • N.B. You can find the host/database IPv4 address under your machines Network settings (10.18.35.xxx)

Still I am stuck with the ohdsi.source setting. I assume the database connection string is the same as specified in the docker-compose.yml. In my case it is:
VALUES (1, 'OHDSI CDM V5 Database', 'OHDSI-CDMV5', 'jdbc:postgresql://10.18.35.193:5432/ohdsi?user=ohdsi_stack_user&password=*****', 'postgresql');
However, I get ‘Internal Server Error’ in Atlas when trying to access e.g. ‘http://localhost:8080/WebAPI/vocabulary/OHDSI-CDMV5/domains’. (I do get a response from ‘http://localhost:8080/WebAPI/source/sources’)
Any suggestions?

Dash might not be a valid value for a URL, Try changing the name to OHDSI_CDMV5.

Thanks for your suggestion. However, the issue was that the cache of Google Chrome kept using old (incorrect) settings (user with insufficient privileges). Using a hyphen in the source_key is not a problem.

t