You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

References

CPS-438 - Getting issue details... STATUS

Background

Liquibase container attempts restart if it takes too long. Liquibase does not release the changelog lock on the data table if it gets restarted. An init container should be used which will not restart and will run until completion.

Possible Fixes:

FixNameStepsPositivesNegatives
1Liquibase init container
  1. Add init container to oom
    1. Restart issues are only happening with kubernetes restarting liquibase
  2. Add "depends on" container to cps
    1. cps standalone deployment is not effected by kubernetes issue
Solution proposed by Liquibase

Double changelog dependency? one in oom, one in cps

Changes to oom and cps projects

2Change/Add liveness probes?Liquibase container is restarted by Kubernetes as it does not read a readiness probe within a certain amount of time. We could extend the time limit, change the restart condition etc...

"Hacky" solution


3Remove Liquibase and replace with similar technologyReplace Liquibase with Flyway

Would solve  CPS-963 - Getting issue details... STATUS

Might come with same issue as Liquibase as is more of a Kubernetes issue?

Flyway does not support NoSQL: Neo4J

Flyway only does sql changelogs, would have to change from yaml > sql

4Remove db migration technologies altogether Remove Liquibase and trigger an sql script that will build the table.

Would solve  CPS-963 - Getting issue details... STATUS

Do we need database migration technologies? Rollback etc

Won't have changelog & rollback unless implement ourselves
5Use Session lock instead of transaction lock for Liquibasehttps://mvnrepository.com/artifact/com.github.blagerweij/liquibase-sessionlock/1.2.5Changeloglock will be dropped once session is dropped by Liquibase containerDoesn't stop kubernetes from restarting the container, just makes it so that the changeloglock will not be retained. 
6Execute Liquibase logic in Spring Boot Service Start Up

Solution 3: https://localcoder.org/how-to-solve-liquibase-waiting-for-changelog-lock-problem-in-several-pods-in-ope

https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.data-initialization.migration-tool.liquibase

Liquibase start up is contained within CPS start up so can avoid kubernetes Liquibase setupNot sure if Liquibase will have its own container or if it will be part of the springboot init container
  • No labels