Default To Hibernate In DevMode

Description

Since 4.6 you need to specify Liquibase scripts for schemas
https://medium.com/corda/continuing-database-harmonization-between-corda-and-corda-enterprise-9d2a8ac12516

When developing locally you can avoid that by letting Hibernate manage the schema which requires the following command line option

java -jar corda.jar --allow-hibernate-to-manage-app-schema

*Corda should default to this when `devMode=true`.*

When in devMode there is already a warning text on startup.
This text could also warn you that you need Liquibase scripts when not in dev mode.

If the user wanted to test their Liquibase scripts locally they would just need to pass the relevant command line parameter to enable it.

I imagine that most people are happy to let hibernate manage their schema at the beginning and aren't interested in the Liquibase scripts until they are closer to deploying on a server for QA or UAT testing.

Therefore, it makes much more sense to just default to hibernate in dev mode rather than requiring the user to enter it every single time.

Created by github action.

Activity

Show:
Christian Sailer
November 20, 2020, 10:47 AM

Yes this change was intentional.

  • We already have too many things switched implicitly on devMode

  • Liquibase scripts are an crucial part of CorDapps with custom schemas. We want people to think about liquibase scripts rather early in the development process. We know that a lot of customers run with devMode = true until very late in their test cycle, and we want to avoid the nasty surprise of “Nothing works in UAT/prod deployment because we suddenly need liquibase scripts”.

  • The liquibase scripts are not required by default for unit tests/integration tests, and nodes can be run without them using that extra flag for the time while developing the schema. It should not be BAU to run without scripts even when developing CorDapps.

  • Once scripts have been added, CordFormation can run the schema set-up as part of the deployNodes step.

Sachin Gokhale
November 19, 2020, 1:37 PM

Hi - Can you please review above comments, this was raised by Open Source community. Please advise if this change was intentional, if so - can you add comments as to why this design decision was made?

Assignee

Christian Sailer

Reporter

Former user

Labels

Sprint

None

Epic Link

None

Priority

Medium

Engineering Teams

None

Fix versions

None

Affects versions

None

Ported to...

None

Story Points / Dev Days

None

Build cut

None

Squad

None