Description
Abhishek Gupta opened SPR-6521 and commented
Problem:
We have implemented a TransactionManager that extends the AbstractPlatformTransactionManager. We noticed that there's a break when we moved to 3.0.0.RC3.
Details:
In the getTransaction(...) method, when doBegin(...) is called, the TransactionStatus is now instantiated using a private method instantiateTransactionStatus(). This breaks our transactionManager that extends newTransactionStatus(). This is infact the case for all the instances where doBegin() is called throughout the code.
Note: The split between creation of the TransactionStatus and preparingSynchronization whereever doBegin() is being called is correct in that the TransactionStatus needs to be created before a call to doBegin() - this was an OOM issue that Juergen had fixed in 3.0.rc1
Proposed Solution:
newTransactionStatus(...) should keep doing what it did earlier i.e. simply be responsible for creating the new TransactionStatus. The prepareSynchronization(...) method should be called outside of it.
Affects: 3.0 RC3
Referenced from: commits 93abbd0