Shared publicly  - 
 
Have you upgraded a #grails application to version 2 yet? Let us know how it went!
15
5
Muhammad Imamuddin's profile photoColin Harrington's profile photoAaron Zirbes's profile photoSwanand Shetwal's profile photo
42 comments
 
Yes, from 1.3.4. The only snag I tripped up on was the Hibernate naming strategy. Once I set naming_strategy = org.hibernate.cfg.DefaultNamingStrategy in the configuration everything was fine connecting to the legacy database.
 
Yep from 1.3.7. Faultless, but my app was a 'toy app' for a Grails chapter in my book, still, very pleased I was able to update to the latest screenshots and info without starting from scratch!
 
Yep, from 1.3.7 to 2.0.0. Not exactly painless, actually quite painful, but I got there in the end.
 
Still upgrading and experiencing the pain. Having problems with migrating spock integration specs.
 
So far no joy; I'm stuck on an issue with Falcone/Multi-Tenant plugin. To be fair, I've not tried very hard due to time constraints, but no #grails 2 love for me :(
 
Upgrade was smooth from 1.3.7 to 2.0.0-RC1, 2.0.0-RC1 → 2.0 was absolutely flawless.
However in 2.0 grails we're having strange issues with project compilation. One of the devs has the same error about once a week: project refuses to launch, saying it can't determine mapping for a column. Deleting ~/.grails/2.0.0 always helps though. Never seen this issue in 1.3.x
 
Not too bad for some medium sized apps. Plugin update issues, Fixing Test failures, incompatibilities JODA -> Hibernate issues (dependencies), Still have our main app to update, but that is coming soon.
 
Quite painful actually. I started this week upgrading two in-house plugins from 1.3.7 to 2.0.0. I will write down my experiences as soon I get a grip on what's going on. Class reloading issues are the most surprising problem. I have 20+ plugins to upgrade so I have plenty of time to learn. The only new feature I was afraid of (resources plugin) has not caused me any trouble at all, works perfect! :)
 
Overall I give it a 6-out-of-10 ... attempting to migrate app using springSecurityUI plugin is very painful due to the resources plugin interaction (that's cost me a couple days already, and I think it'll cost a couple more). Also, encountering some STS problems (webxml-1.4/1.4.1 upgrades) that look to be around weird .classpath remnants ... and hopping between STS (for editing support) and command line (for the new interactive console) is tedious enough that I'm starting to learn how to use Vim for grails ;)
 
Upgraded a few apps from 1.3.6 to 2.0.0. Some of them were quite easy (not many controllers/views), but the one with inline plugins and some scaffolded pages with a few tweaks was really painful. This was due to:
- some annoying css rules in main.css that affects more than they should (e.g. changing padding and line-height for all table cells, site-wide)
- css not tested in IE (e.g. buttons with text and icon on top of each other)
- resources framework removing javascript from html fragments retrieved with ajax (were no sitemesh template is involved and thus no r:layoutResources)
- needed to add plugin:'my-plugin' to stylesheet imports in sitemesh templates in inline plugins (1.3.x would simply assume the plugin you're in)
- etc.
Lessons learned: don't rely on Grails's default main.css except for purely scaffolded pages.
Will probably submit a few pull requests when I get the time.
 
Some apps successfully upgraded, some still in progress because multi-tenant-core plugin makes some problems
 
Reworking old templates to use the resources plug-in was, and updating BuildConfig.groovy was the biggest pain. 4 down, 31 to go. Peter Ledbrook's blog post, video and "What's New" documentation did a good job at letting me know where the problem areas would be.
 
+Marco Vermeulen exactly the problem I had. Geb and Spock refused to play nicely. Took me a few days to work around that. I wish I'd kept a note of what I ran into, but I was getting hugely annoyed (as were my clients) so I just attacked it for a few days straight.
 
For us it varies per project. For one project we had to rewrite some controllers due to http://jira.grails.org/browse/GRAILS-5531 as well as unit tests.

For another (much bigger) project we still need to look into and fix performance regressions as Hibernate FetchMode strategies are not taken into account in the CriteriaBuilder (currently preventing us from upgrading)
 
Badly. My BlazeDS Plugin required apps stoped working so I forgot Grails.
 
One app went flawlessly, though it was not so complex. I still haven't dared to try the big one :)
 
I was able to upgrade several fairly simple grails apps from 1.3.7 to grails 2.0 via the 2.0.x milestone and release candidate releases without much problem at all.
Our most complicated and sophisticated grails app (1.3.7 to 2.0.Mx, 2.0.RCx to 2.0.0) has been much more difficult, but we are nearly there. We're in the process of merging back to the master/trunk branch.
Our team (2 to 4 engineers) started the process just before 2.0 went GA, and we are still in the process of upgrading, so a detailed and definitive retrospective is not yet ready for analysis. I'm hoping to go over the commit history and figure out where the most significant issues were.

Here are some notes on the strategy and recollections. Sorry if it's pretty non-specific :
*We created an upgrade branch and corresponding Jenkins build.
*We upgraded the plugins and removed some that weren't immediately necessary (code coverage, codenarc, geb, spock, etc) to get a clean grails compile, but that was a fairly difficult step. This mean cleaning our .grails and ivy cache pretty regularly.
*Once we got a clean compile we started trying to run-app it. One of the first issues we found was that Spring 3.1 introduced a name collision is probably related to the addition of org.springframework.core.env Interface Environment. This required a lot of refactoring to avoid colliding with the environment bean.
* Some nonspecific issues related to groovy 1.7 to 1.8.x compilation.
* URL mapping issues related to remapping redirect(uri: "/index.gsp") to redirect(uri: "/")
* Some issues related to JSON marshalling/unmarshalling
A couple weeks agowe got the app up and running, set up Jenkins hot deploy and we are now starting to run the Geb Browser Automation functional tests again. We are also working through the unit and integration tests to get our builds working.

It took a significant amount of effort and time, so we plan on doing a fairly detailed retrospective when we're done.

Looking forward to the advantages of Grails 2.0
 
No, I downgraded my grails 1.3.7 to 1.2.5. Just fed up with all these hibernate and dynamic finders issues.
 
Upgrade went well, all things considered. For some time, I lived on the bleeding edge, where the security plugin was battling nightly with new versions of the webxml and resources plugins. Grails 2 is a great improvement and I am looking forward to delve deeper into the new stuff.
 
+Wayne Stidolph For future major releases I have learned that it is probably wise to keep a healthy distance from where the Grails dev team is hunting the last minute bugs. But what's conventional wisdom compared to the promised land of shiny new features? The time from 2-M1 to 2.0 was ... exciting (that, and waiting for IntelliJ IDEA to upgrade to v11 - using a beta IDE with a beta framework was a new experience).
But it was also good to see the constant progress being made by the Grails developers, and if by testing the results I can make it better ... well, that's sometimes worth it. Now Grails 2.0 is running well - I just have to figure out why it suddenly stopped loading external config files...
 
Yes, it was good, except we are still unhappy about startup times and not knowing if instant recompilation worked or not. Servlet 3.0 needs too much memory. But: great release!
 
No yet due to outdated plugins without 2.0 versions, and we're on Acegi security yet.
 
Yes, and it worked, i'm waiting for the new version with REST for Grails
 
I tried upgrading a fairly complex app but encountered too many problems related to unit tests and Spock tests. I am waiting for the next release to give it a second try.
 
I've upgraded from 1.3.7 to 2.0.0 successfully with some difficulties but not big problems at all. Thanks guys.
 
We have some apps based on grails 1.3.7 and we decided to not upgrade this apps :) Waiting untill you fix most issues and replace gant with gradle (Grails 3.0?)
But, anyway, thx for the great work!
 
Application successfully upgraded from 1.3.7 to 2.0.0 with some issues, but making tests (spock, geb) working was really painful...
 
I upgraded one app with 7 internal plugins. The upgrade went smooth, except for the tests. There were around 500 unit tests in total, and it took a week of 3 hours/day to get the tests re-written to Grails 2.0 format. On my Win 7 X64 machine, the grails interactive-mode vm would start doing strange things, such as not re-loading changed tests, having errors in one test cause errors in other tests, and outputting weird exceptions. I kept cleaning and restarting interactive mode and after a week, all tests are passing.
 
worked pretty well for the most part. Few comments: you MUST upgrade spring security or you will get some thread context errors. If you have your own plugins (not in repo) it seems you must first uninstall it from your app, then reinstall the upgraded plugins. Finally if you have redefined grails.serverUrl make sure its set correctly since redirect makes use of it. In all honesty aside from my own stupidity on the last part it was VERY smooth.
Only issue i have seen thus far in grails console it doesn't seem to pick up a service that is compiled, which makes some of my debugging harder.
 
Ours is a pretty large app (about 100K LOC) using many plugins. We tried a while ago (pre 2.0.0) and realized it would be somewhat painful because we use a lot of inline plugins (including a heavily customized multi-tenant plugin). Like I said, we use a lot of public plugins, though I think many of those have been upgraded by now. I think because of the experiences above, we are currently waiting for 2.0.1 to come out.

Does anybody know when that's scheduled? It still has three open blockers, though 60 or so issues closed or resoled

http://jira.grails.org/browse/GRAILS/fixforversion/13005
 
Conversion went well, from 1.3.7. But we started to notice deployment issues when hot deploying the 2.0 war. The undeploy is unregistering all jdbc drivers, and if the driver jar is in tomact/lib, it unregistered that as well, messing up other webapplications. This never happened prior to 2.0. ... we've been scrambling to fix this week as we want to go to production.

After discussion with out group we are going to stick with 1.3.7 for other builds until the maven-plugin for v2.0 is released. We have decided to use maven for our builds and are hopeful that the maven integration will continue to improve ( as it has in the past ) release to release.
 
yup..from 1.3.7 to 2.0.0 in 10 days....it was very painful ....most of our time went into fixing unit test cases. in-memory gorm has lots of un-supported methods like executeQuery..so it took us a while to fix all unit test cases.

It was not really worth migrating to 2.0. I should have waited little for the next release.
 
My app has become much more slower now, I suppose it's because of some of the unwanted plugins? Is it the case?
 
Had to revert to 1.3.7 due to incompatibility between the CometD plugin and the new Tomcat (7) plugin. And the Tomcat 6 plugin doesn't work properly with 2.0 either :-(
 
+Swanand Shetwal I am not sure what you mean by "unwanted plugins" items like the release plugin etc aren't going to get ran or loaded by your app. So those shouldnt slow it down.

+Saurabh Agrawal Question .. "in-memory gorm has lots of un-supported methods like executeQuery" ? Are you running unit or integration test? I will admit most of our db backed tests use Spock + functionla plugin
Grails
 
+Jeffrey Brekke Have you raised a JIRA for that?
+Saurabh Agrawal HQL requires extra mocking or integration tests. We'll look into making that clearer.
+Swanand Shetwal Slower in what way? Slower in production? Or slower to load a page the first time in development? The reloading agent does slow startup, but the reloading is much more reliable. You can test by doing 'grails -noreloading run-app' to see whether that's quicker in your particular circumstances.
 
There are a few issues to keep in mind but they all are documented fairly well on the site. the resourceLayouts is one. Unit Testing changes one should really look at. And the bigger "breaking" change is the criteria query default join changes. That has effected us a bit.
 
This command save my life
grep testsuite target/test-reports/TESTS-TestSuites.xml | grep -v testsuites | cut -d\ -f8-9 | sed -E 's/name="(.)" package="(.)"/\2.\1/' | grep .
because I had a problem with swap memory and this command help to find the wrong test.
 
Hi Guys,

I'm facing issues while grails upgradation from 1.3.7 to grails 2.2.0

1. My Exsiting test cases are faling due to changes in testing framework.
groovy.lang.MissingMethodException: No signature of method: com.edifecs.tdm.model.AttendingProvider.delete() is applicable for argument types: () values: []
2. My application is not getting up in IDE even its working with standalone tomcat server.

Please help me on the above issues if you have any idea about these issues.
Add a comment...