Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.x: archetype: database-se does not use in-memory DB by default #7876

Closed
barchetta opened this issue Oct 21, 2023 · 1 comment · Fixed by #7877
Closed

4.x: archetype: database-se does not use in-memory DB by default #7876

barchetta opened this issue Oct 21, 2023 · 1 comment · Fixed by #7877
Assignees
Labels
4.x Version 4.x DB client Helidon DB Client examples P3
Milestone

Comments

@barchetta
Copy link
Member

barchetta commented Oct 21, 2023

Environment Details

  • Helidon Version: 4.0.0

  • Helidon SE

  • JDK version:
    java 21 2023-09-19 LTS
    Java(TM) SE Runtime Environment (build 21+35-LTS-2513)
    Java HotSpot(TM) 64-Bit Server VM (build 21+35-LTS-2513, mixed mode, sharing)

  • OS: macOS


Problem Description

Using the CLI, generate the SE database application type (accepting defaults). The application builds, but it fails at startup (see exception below). This is because the default configuration requires you to start a DB (this is documented in the README). Is this what we want? In 3.x it used an in-memory DB URL so it worked out of the box.

java -jar target/database-se.jar
2023.10.21 14:26:16.997 HikariPool-1 - Starting...
2023.10.21 14:26:17.130 HikariPool-1 - Start completed.
2023.10.21 14:26:19.212 Could not create tables
io.helidon.dbclient.DbClientException: Failed to create a connection to jdbc:h2:tcp://localhost:9092/~test
	at io.helidon.dbclient.hikari.HikariConnectionPool.connection(HikariConnectionPool.java:70)
	at io.helidon.dbclient.jdbc.JdbcStatement.prepareStatement(JdbcStatement.java:111)
	at io.helidon.dbclient.jdbc.JdbcStatement.prepareStatement(JdbcStatement.java:100)
	at io.helidon.dbclient.jdbc.JdbcStatementDml.doExecute(JdbcStatementDml.java:73)
	at io.helidon.dbclient.jdbc.JdbcStatementDml.lambda$execute$0(JdbcStatementDml.java:54)
	at io.helidon.dbclient.DbStatementBase.doExecute(DbStatementBase.java:97)
	at io.helidon.dbclient.jdbc.JdbcStatementDml.execute(JdbcStatementDml.java:52)
	at io.helidon.dbclient.DbExecute.namedDml(DbExecute.java:341)
	at me.jdipol.se.database.PokemonService.initSchema(PokemonService.java:68)
	at me.jdipol.se.database.PokemonService.init(PokemonService.java:58)
	at me.jdipol.se.database.PokemonService.<init>(PokemonService.java:53)
	at me.jdipol.se.database.Main.routing(Main.java:74)
	at io.helidon.webserver.WebServerConfigSupport$ListenerCustomMethods.routing(WebServerConfigSupport.java:158)
	at io.helidon.webserver.ListenerConfig$BuilderBase.routing(ListenerConfig.java:228)
	at me.jdipol.se.database.Main.main(Main.java:60)
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 2004ms.
	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:181)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
	at io.helidon.dbclient.hikari.HikariConnectionPool.connection(HikariConnectionPool.java:67)
	... 14 more
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: localhost:9092" [90067-220]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
	at org.h2.message.DbException.get(DbException.java:212)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:437)
	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122)
	at org.h2.Driver.connect(Driver.java:59)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
	at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:733)
	at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.net.ConnectException: Connection refused
	at java.base/sun.nio.ch.Net.pollConnect(Native Method)
	at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
	at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
	at java.base/java.net.Socket.connect(Socket.java:751)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:135)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:99)
	at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:130)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433)
	... 13 more

2023.10.21 14:26:21.227 Transaction rollback with no statement being executed.
2023.10.21 14:26:21.229 Could not delete tables
io.helidon.dbclient.DbClientException: Failed to create a connection to jdbc:h2:tcp://localhost:9092/~test
	at io.helidon.dbclient.hikari.HikariConnectionPool.connection(HikariConnectionPool.java:70)
	at io.helidon.dbclient.jdbc.TransactionContext.connection(TransactionContext.java:58)
	at io.helidon.dbclient.jdbc.JdbcTransactionStatement.prepareStatement(JdbcTransactionStatement.java:50)
	at io.helidon.dbclient.jdbc.JdbcStatement.prepareStatement(JdbcStatement.java:100)
	at io.helidon.dbclient.jdbc.JdbcStatementDml.doExecute(JdbcStatementDml.java:73)
	at io.helidon.dbclient.jdbc.JdbcTransactionStatementDml.lambda$execute$0(JdbcTransactionStatementDml.java:50)
	at io.helidon.dbclient.DbStatementBase.doExecute(DbStatementBase.java:97)
	at io.helidon.dbclient.jdbc.JdbcTransactionStatementDml.execute(JdbcTransactionStatementDml.java:50)
	at io.helidon.dbclient.DbExecute.namedDelete(DbExecute.java:290)
	at me.jdipol.se.database.PokemonService.deleteData(PokemonService.java:120)
	at me.jdipol.se.database.PokemonService.initSchema(PokemonService.java:73)
	at me.jdipol.se.database.PokemonService.init(PokemonService.java:58)
	at me.jdipol.se.database.PokemonService.<init>(PokemonService.java:53)
	at me.jdipol.se.database.Main.routing(Main.java:74)
	at io.helidon.webserver.WebServerConfigSupport$ListenerCustomMethods.routing(WebServerConfigSupport.java:158)
	at io.helidon.webserver.ListenerConfig$BuilderBase.routing(ListenerConfig.java:228)
	at me.jdipol.se.database.Main.main(Main.java:60)
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 2005ms.
	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:181)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
	at io.helidon.dbclient.hikari.HikariConnectionPool.connection(HikariConnectionPool.java:67)
	... 16 more
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: localhost:9092" [90067-220]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
	at org.h2.message.DbException.get(DbException.java:212)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:437)
	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122)
	at org.h2.Driver.connect(Driver.java:59)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
	at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:733)
	at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.net.ConnectException: Connection refused
	at java.base/sun.nio.ch.Net.pollConnect(Native Method)
	at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
	at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
	at java.base/java.net.Socket.connect(Socket.java:751)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:135)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:99)
	at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:130)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433)
	... 13 more

2023.10.21 14:26:23.251 Transaction rollback with no statement being executed.
Exception in thread "main" io.helidon.dbclient.DbClientException: Failed to create a connection to jdbc:h2:tcp://localhost:9092/~test
	at io.helidon.dbclient.hikari.HikariConnectionPool.connection(HikariConnectionPool.java:70)
	at io.helidon.dbclient.jdbc.TransactionContext.connection(TransactionContext.java:58)
	at io.helidon.dbclient.jdbc.JdbcTransactionStatement.prepareStatement(JdbcTransactionStatement.java:50)
	at io.helidon.dbclient.jdbc.JdbcStatement.prepareIndexedStatement(JdbcStatement.java:168)
	at io.helidon.dbclient.jdbc.JdbcStatement.prepareStatement(JdbcStatement.java:95)
	at io.helidon.dbclient.jdbc.JdbcStatementDml.doExecute(JdbcStatementDml.java:73)
	at io.helidon.dbclient.jdbc.JdbcTransactionStatementDml.lambda$execute$0(JdbcTransactionStatementDml.java:50)
	at io.helidon.dbclient.DbStatementBase.doExecute(DbStatementBase.java:97)
	at io.helidon.dbclient.jdbc.JdbcTransactionStatementDml.execute(JdbcTransactionStatementDml.java:50)
	at io.helidon.dbclient.DbExecute.namedInsert(DbExecute.java:184)
	at me.jdipol.se.database.PokemonService.initTypes(PokemonService.java:97)
	at me.jdipol.se.database.PokemonService.initData(PokemonService.java:83)
	at me.jdipol.se.database.PokemonService.init(PokemonService.java:61)
	at me.jdipol.se.database.PokemonService.<init>(PokemonService.java:53)
	at me.jdipol.se.database.Main.routing(Main.java:74)
	at io.helidon.webserver.WebServerConfigSupport$ListenerCustomMethods.routing(WebServerConfigSupport.java:158)
	at io.helidon.webserver.ListenerConfig$BuilderBase.routing(ListenerConfig.java:228)
	at me.jdipol.se.database.Main.main(Main.java:60)
Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 2001ms.
	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:181)
	at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
	at io.helidon.dbclient.hikari.HikariConnectionPool.connection(HikariConnectionPool.java:67)
	... 17 more
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.ConnectException: Connection refused: localhost:9092" [90067-220]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
	at org.h2.message.DbException.get(DbException.java:212)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:437)
	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:325)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122)
	at org.h2.Driver.connect(Driver.java:59)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
	at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:733)
	at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.net.ConnectException: Connection refused
	at java.base/sun.nio.ch.Net.pollConnect(Native Method)
	at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
	at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:549)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
	at java.base/java.net.Socket.connect(Socket.java:751)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:135)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:99)
	at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:130)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:433)
	... 13 more
@barchetta barchetta added examples DB client Helidon DB Client 4.x Version 4.x labels Oct 21, 2023
@barchetta barchetta added the bug Something isn't working label Oct 21, 2023
@barchetta barchetta changed the title database-se archetype fails to start 4.x: database-se archetype fails to start Oct 21, 2023
@barchetta barchetta changed the title 4.x: database-se archetype fails to start 4.x: archetype: database-se app fails to start Oct 21, 2023
@barchetta
Copy link
Member Author

barchetta commented Oct 21, 2023

The archetype now requires a database to be started. So you can either:

  1. Start the database as described in the README.md or
  2. Change the DB URL in application.yaml to use the in-memory database: url: "jdbc:h2:mem:test"

@barchetta barchetta changed the title 4.x: archetype: database-se app fails to start 4.x: archetype: database-se does not use in-memory DB by defrault Oct 21, 2023
@barchetta barchetta changed the title 4.x: archetype: database-se does not use in-memory DB by defrault 4.x: archetype: database-se does not use in-memory DB by default Oct 21, 2023
@barchetta barchetta removed the bug Something isn't working label Oct 21, 2023
@barchetta barchetta added this to the 4.0.1 milestone Oct 24, 2023
@m0mus m0mus added the P3 label Oct 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4.x Version 4.x DB client Helidon DB Client examples P3
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

3 participants