jhipster / generator-jhipster-micronaut

Micronaut blueprint for JHipster

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bug/help Profile prod doesn't run migrations

agilob opened this issue · comments

I deployed a project using the generated app.yml (had to put postgres.yml inside the file due to old docker-compose on server which doesn't recognise external/imported services), application connected to the database, but no migrations were run, no tables were created. It works all fine on dev when I run in h2 database, but when deployed in docker using prod it doesn't start liquibase migrations. Has anyone else seen this?

Attempt to login causes hibernate error "table doesnt exist", so it queries correctly.

So you start the docker image not the jar directly? I usually don't start it via app.yml/docker so I need to check.

It looks like the environment variable in the app.yml is not correct. At least it doesn't fit the schema in the properties.

datasources:
  default:
    url: "<%-dbUrl%>"
    username: "<%=dbUser%>"

VS just JDBC_URL in the app.yml
can you try DATASOURCES_DEFAULT_URL=jdbc:postgresql://XYZ-postgresql:5432/XYZ in the app.yml?

I run /mvnw -Pprod verify jib:build which builds the docker image and uploads it to my private repo. Then pull it from the repo and start using docker-compose. I think JDBC_URL in docker-compose also isn't correct, but for this project I configured db access from application-prod.yml.

Will give it a try now:

    environment:
      - _JAVA_OPTIONS=-Xmx512m -Xms256m
      - MICRONAUT_ENVIRONMENTS=prod
      - JDBC_URL=jdbc:postgresql://agileb-postgresql:5432/agileb
      - DATASOURCES_DEFAULT_URL=jdbc:postgresql://agileb-postgresql:5432/agileb
      - JHIPSTER_SLEEP=10 # gives time for other services to boot before the application

No, still doesnt run migrations

----------------------------------------------------------
        Application 'agileb' is running! Access URLs:
        Local:                  http://localhost:8080
        External:               http://a3c423a4900e:8080
        Environment(s):         [prod]
----------------------------------------------------------
13:58:00.013 [nioEventLoopGroup-1-8] WARN  o.h.h.i.ast.QueryTranslatorImpl - HHH000104: firstResult/maxResults specified with collection fetch; applying in memory!
13:58:00.016 [nioEventLoopGroup-1-7] WARN  o.h.h.i.ast.QueryTranslatorImpl - HHH000104: firstResult/maxResults specified with collection fetch; applying in memory!
13:58:00.067 [nioEventLoopGroup-1-7] WARN  o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42P01
13:58:00.068 [nioEventLoopGroup-1-8] WARN  o.h.e.jdbc.spi.SqlExceptionHelper - SQL Error: 0, SQLState: 42P01
13:58:00.069 [nioEventLoopGroup-1-8] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: relation "jhi_user" does not exist
  Position: 726
13:58:00.069 [nioEventLoopGroup-1-7] ERROR o.h.e.jdbc.spi.SqlExceptionHelper - ERROR: relation "jhi_user" does not exist
  Position: 726
13:58:00.141 [nioEventLoopGroup-1-7] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet

In that case I have no idea right now. Need to investigate further.

After 3 minutes liquibase kicked in

14:02:39.983 [pool-1-thread-1] ERROR i.m.c.d.l.LiquibaseMigrationRunner - Migration failed! Liquibase encountered an exception.
liquibase.exception.LockException: Could not acquire change log lock.  Currently locked by 8e5371743230 (172.22.0.3) since 7/27/20, 9:59 AM
        at liquibase.lockservice.StandardLockService.waitForLock(StandardLockService.java:236)
        at liquibase.Liquibase.update(Liquibase.java:184)
        at liquibase.Liquibase.update(Liquibase.java:179)
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.performUpdate(LiquibaseMigrationRunner.java:190)
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.migrate(LiquibaseMigrationRunner.java:147)
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.migrateAsync(LiquibaseMigrationRunner.java:123)
        at io.micronaut.configuration.dbmigration.liquibase.$LiquibaseMigrationRunnerDefinition$Intercepted.$$access0(Unknown Source)
        at io.micronaut.configuration.dbmigration.liquibase.$LiquibaseMigrationRunnerDefinition$Intercepted$$proxy0.invokeInternal(Unknown Source)
        at io.micronaut.context.AbstractExecutableMethod.invoke(AbstractExecutableMethod.java:146)
        at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:60)
        at io.micronaut.scheduling.async.AsyncInterceptor.lambda$intercept$3(AsyncInterceptor.java:87)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:79)
        at io.micrometer.core.instrument.Timer.lambda$wrap$0(Timer.java:148)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
14:02:39.990 [pool-1-thread-1] ERROR i.micronaut.scheduling.TaskExecutors - Error occurred executing @Async method [void migrateAsync(LiquibaseConfigurationProperties config,DataSource dataSource)]: Migration failed! Liquibase encountered an exception.
io.micronaut.runtime.exceptions.ApplicationStartupException: Migration failed! Liquibase encountered an exception.
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.migrate(LiquibaseMigrationRunner.java:152)
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.migrateAsync(LiquibaseMigrationRunner.java:123)
        at io.micronaut.configuration.dbmigration.liquibase.$LiquibaseMigrationRunnerDefinition$Intercepted.$$access0(Unknown Source)
        at io.micronaut.configuration.dbmigration.liquibase.$LiquibaseMigrationRunnerDefinition$Intercepted$$proxy0.invokeInternal(Unknown Source)
        at io.micronaut.context.AbstractExecutableMethod.invoke(AbstractExecutableMethod.java:146)
        at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:60)
        at io.micronaut.scheduling.async.AsyncInterceptor.lambda$intercept$3(AsyncInterceptor.java:87)
        at io.micrometer.core.instrument.composite.CompositeTimer.record(CompositeTimer.java:79)
        at io.micrometer.core.instrument.Timer.lambda$wrap$0(Timer.java:148)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: liquibase.exception.LockException: Could not acquire change log lock.  Currently locked by 8e5371743230 (172.22.0.3) since 7/27/20, 9:59 AM
        at liquibase.lockservice.StandardLockService.waitForLock(StandardLockService.java:236)
        at liquibase.Liquibase.update(Liquibase.java:184)
        at liquibase.Liquibase.update(Liquibase.java:179)
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.performUpdate(LiquibaseMigrationRunner.java:190)
        at io.micronaut.configuration.dbmigration.liquibase.LiquibaseMigrationRunner.migrate(LiquibaseMigrationRunner.java:147)
        ... 13 common frames omitted

Ok. DELETE FROM DATABASECHANGELOGLOCK fixed it, strange, I don't remember it failing any start or migration. First time I started the service it didnt work.