@raff, I need your help with the SDK.
So, in a docker container, I’m running:
mvn org.openmrs.maven.plugins:openmrs-sdk-maven-plugin:2.0.3:setup \
-B -e \
-DserverId=4 \
-Dversion=2.3 \
-DdbDriver=mysql \
-DdbUri=jdbc:mysql://172.17.0.1:3306/openmrs-4 \
-DdbUser=root \
-DdbPassword=openmrs
I can see it created the installation.properties file
root@d11ca3f8bcfe:~# cat /root/openmrs/4/installation.properties
#Mon Nov 09 00:57:58 UTC 2015
openmrs.platform.version=2.3
create_database_user=false
connection.username=root
connection.url=jdbc\:mysql\://172.17.0.1\:3306/openmrs-4
server.id=4
connection.driver_class=com.mysql.jdbc.Driver
admin_user_password=Admin123
connection.password=openmrs
install_method=auto
module_web_admin=true
add_demo_data=false
create_tables=true
has_current_openmrs_database=true
openmrs.version=1.11.4
database_name=openmrs-4
auto_update_database=false
And then I try to run the run command:
$ mvn \
org.openmrs.maven.plugins:openmrs-sdk-maven-plugin:2.0.3:run \
-B -e \
-DserverId=4
(.... downloads the internet...)
[INFO] Configuring Jetty for project: Maven Stub Project (No POM)
[INFO] Context path = /openmrs
[INFO] Tmp directory = /root/openmrs/4/tmp
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml
[INFO] Web overrides = none
2015-11-09 07:08:24.941:INFO:oejs.Server:main: jetty-9.0.4.v20130625
2015-11-09 07:08:28.165:INFO:oejpw.PlusConfiguration:main: No Transaction manager found - if your webapp requires one, please configure one.
2015-11-09 07:08:36.801:INFO:/openmrs:main: No Spring WebApplicationInitializer types detected on classpath
2015-11-09 07:08:37.595:INFO:/openmrs:main: Set web app root system property: 'webapp.root' = [/root/openmrs/4/tmp/webapp]
2015-11-09 07:08:37.598:INFO:/openmrs:main: Initializing log4j from [classpath:log4j.xml]
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2669) |2015-11-09 07:08:37,678| Unable to find a runtime properties file at /root/openmrs-runtime.properties
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2697) |2015-11-09 07:08:37,697| Unable to find properties file: /root/openmrs/4/openmrs-runtime.properties
WARN - OpenmrsUtil.getRuntimeProperties(2630) |2015-11-09 07:08:37,699| Unable to find a runtime properties file. Initial setup is needed. View the webapp to run the setup wizard.
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2669) |2015-11-09 07:08:38,168| Unable to find a runtime properties file at /root/openmrs-runtime.properties
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2697) |2015-11-09 07:08:38,171| Unable to find properties file: /root/openmrs/4/openmrs-runtime.properties
WARN - OpenmrsUtil.getRuntimeProperties(2630) |2015-11-09 07:08:38,172| Unable to find a runtime properties file. Initial setup is needed. View the webapp to run the setup wizard.
ERROR - UpdateFilterModel.updateChanges(77) |2015-11-09 07:08:42,496| Unable to get the database changes
java.lang.RuntimeException: Error occurred while trying to get the updates needed for the database. Unable to get a connection to the database. Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set
at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:637)
at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:594)
at org.openmrs.web.filter.update.UpdateFilterModel.updateChanges(UpdateFilterModel.java:69)
at org.openmrs.web.filter.update.UpdateFilterModel.<init>(UpdateFilterModel.java:47)
at org.openmrs.web.filter.update.UpdateFilter.init(UpdateFilter.java:457)
at org.eclipse.jetty.servlet.FilterHolder.initialize(FilterHolder.java:135)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:800)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1322)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:731)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:175)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108)
at org.eclipse.jetty.server.Server.start(Server.java:342)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58)
at org.eclipse.jetty.server.Server.doStart(Server.java:290)
at org.eclipse.jetty.maven.plugin.JettyServer.doStart(JettyServer.java:68)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:556)
at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:352)
at org.eclipse.jetty.maven.plugin.JettyRunWarMojo.execute(JettyRunWarMojo.java:69)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
at org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo(MojoExecutor.java:94)
at org.openmrs.maven.plugins.Run.execute(Run.java:113)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
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:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.Exception: Unable to get a connection to the database. Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set
at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:369)
at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:623)
... 55 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2395)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2316)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at org.openmrs.util.DatabaseUpdater.getConnection(DatabaseUpdater.java:431)
at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:366)
... 56 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1129)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:358)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2489)
at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2334)
... 70 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:244)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:308)
... 72 more
2015-11-09 07:08:46.567:INFO:oejsh.ContextHandler:main: Started o.e.j.m.p.JettyWebAppContext@6ac0b715{/openmrs,file:/root/openmrs/4/tmp/webapp/,AVAILABLE}{/root/openmrs/4/openmrs-1.11.4.war}
2015-11-09 07:08:46.615:INFO:oejs.ServerConnector:main: Started ServerConnector@3bf24519{HTTP/1.1}{0.0.0.0:8080}
[INFO] Started Jetty Server
And then I’m not sure why it’s failing. I can really login using that user, I tried both root and the owner of the database, test/test. I can login using mysql client in another docker container using that IP/username/password/database.
Should I pass some other option? How to debug this?
In case you want to reproduce, after cloning https://github.com/cintiadr/docker-openmrs:
~/checkouts/docker-openmrs (master:git) $ vagrant up # run the openmrs:setup and wait for a loooong time
~/checkouts/docker-openmrs (master:git) $ vagrant ssh
vagrant@vagrant:~$ sudo -i
root@vagrant:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d11ca3f8bcfe openmrs-mysql "/bin/sh -c /bin/run-" 6 hours ago Up 6 hours 0.0.0.0:32768->8080/tcp openmrs-mysql-4
fb030b3d5808 mysql "/entrypoint.sh mysql" 6 hours ago Up 6 hours 3306/tcp mysql-4
root@vagrant:~# docker exec -it d11ca3f8bcfe /bin/bash #(copy the container ID of the openmrs-mysql)
root@d11ca3f8bcfe:/# cd ~
root@d11ca3f8bcfe:~# mvn org.openmrs.maven.plugins:openmrs-sdk-maven-plugin:2.0.3:run -B -e -DserverId=4