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: https://www.baeldung.com/spring-boot-security-autoconfiguration spring.autoconfigure.exclude=['org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration', 'org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration']