Open ghost opened 6 years ago
You call ApplicationLifecycle.addShutdownHook
, since recompilation usually means the server is going to be bounced:
https://www.playframework.com/documentation/2.6.x/ScalaDependencyInjection#Stopping/cleaning-up
I thought it was already done properly here: https://github.com/playframework/play-scala-isolated-slick-example/blob/2.6.x/app/Module.scala#L33
Does it need to be changed? It calls the shutdown hook when I stop the server by hitting enter
but it is not calling the hook after a template recompilation / server reload.
That certainly looks right. Can you attach a debugger and set a breakpoint? You can use https://www.playframework.com/documentation/2.6.x/PlayConsole#debugging to set up the JDPA port and then attach to local process from IntelliJ IDEA.
Seems to be an issue with the connection pool not getting restarted/closed on the reload. Work around for this issue is to use connectionPool=disabled for the DatabaseConfig
Environment:
Issue Description
After firing up the server in dev mode with
sbt flyway/flywayMigrate slickCodegen run
a subsequent change to the templateindex.scala.html
will cause the following error after attempting to reload the web page:[error] java.lang.RuntimeException: Failed to run slick-codegen: Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-196]
How do we ensure the shutdown hook for closing the DB connection is called after a template is recompiled?