There seems to be a change in the way locks and/or transactions work when handling concurrent requests.
I've created a test app (Bank Of Grails) to demonstrate the issue on both Grails 1.3.7 and Grails 2.0.0.RCx.
You will need Apache Bench (AB) to test them
You can get the code from github:
https://github.com/domiko/bog200 for Grails 2.0.0
https://github.com/domiko/bog137 for Grails 1.3.7
Non-generated code is identical in both versions.
Build the projects and run
ab -n 1000 -c 100 http://localhost:8080/bog200/teller/randomTransfer
ab -n 1000 -c 100 http://localhost:8080/bog137/teller/randomTransfer
The 1.3.7 version works while the 2.0.0 version throws StaleObjectStateException exceptions.