DEV Community

Tucker Pelletier
Tucker Pelletier

Posted on

Grails 3.3.10 to 4.0.2 Postmortem

The Grails 3 to 4 upgrade was nowhere near as daunting as upgrading from 2.5.x. However, I thought I would do a postmortem for the upgrade just the same. This is for a project that has about 80,000 lines of Groovy/Grails, and 40,000 lines of GSP, which is quickly becoming deprecated for Angular.


  • Custom password salt implementation finding temp workaround then replacing, with bcrypt.
  • Removing a duplicate class wonder why this didn't cause issues before
  • Removed a class that was just a script, which means it had a main method which caused errors
  • Fixed unit test the fall back for the mixins didn't seem to work anymore
  • Gorm/HQL had to replace all ? params with positional ?0,?1,..., etc.
  • Had to add enabled = true to war task
  • groovy.json.internal.LazyMap was being used with instanceof had to update to org.apache.groovy.json.internal.LazyMap
  • Many instances where hibernate proxies were not being unwrapped. Fixed with GrailsHibernateUtil.unwrapIfProxy or fetch:'join' depending on circumstances
  • DB migration plugin no longer has access to system properties so I had to add a fallback candidate to the config.
  • Actuators and h2 console changed so I had to update the security around them
  • Had to move where I defined the sourceSets for the resources for the db migrations
  • Had to exclude old converters from grails-datastore-rest-client, which we should upgrade
  • Had to fix spring security ldap: spring.autoconfigure.exclude=['org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration', '']

Other resources:

Top comments (0)