[ http://issues.apache.org/jira/browse/JS2-495?page=comments#action_12367685 ]
David Sean Taylor commented on JS2-495: --------------------------------------- The unit tests are passing, rollbacks execute correctly in unit test, and the cache is now rolling back. I deployed to a Tomcat, and the rollbacks quit working. This had me stumped for a bit. Well interesting enough, it seems that a commit was getting in before my rollback, which tells me that OJB has some problem with ordering of DML. Where was the commit coming from? A very db-chatty implementation of the DB Page Manager, as it writes upon what I would expect to be read only operations. When we build the menus and tabs to be displayed for a page, there is an awful lot of database activity, including writes. It seems that these writes are atomic, and are forcing a commit on a shared connection with my test code (a portlet action) that executes the addPages API (see SiteBrowserPortlet.java, txTest() method) See attached chatty.log for database activity details Im leaving this open until I can figure out why the commit was slipping in before the rollback. > OJB + Spring Transactions broken > -------------------------------- > > Key: JS2-495 > URL: http://issues.apache.org/jira/browse/JS2-495 > Project: Jetspeed 2 > Type: Bug > Components: Persistence and DAO > Versions: 2.1-dev > Reporter: David Sean Taylor > Assignee: David Sean Taylor > Priority: Critical > Fix For: 2.1-dev > > I tried writing a unit test to test OJB + Spring transactions. > To my suprise, transactions are not starting. > In fact, Im seeing some surprising results in mysql.log > (yes Im using InnoDB), note no transactions, and the forced autocommit > 118 Query SET autocommit=1 > 117 Prepare [1] INSERT INTO FOLDER... > 117 Execute [1] INSERT INTO FOLDER... > 117 Query SET autocommit=1 > It appears that OJB repeatedly sets autocommit=1 > and > it never starts any transactions > Here is my unit test, which tests out a new 'fake' API addPage to the > PageManager. This API is temporary to test transactional behavior: > public void testTx() throws Exception > { > Folder root = pageManager.newFolder("/"); > pageManager.updateFolder(root); > Page[] pages = new Page[3]; > pages[0] = pageManager.newPage("/test1.psml"); > pages[1] = pageManager.newPage("/test2.psml"); > pages[2] = pageManager.newPage("/test3.psml"); > try > { > pageManager.addPages(pages); > } > In addPages, I try to force a rollback: > public int addPages(Page[] pages) > throws JetspeedException > { > System.out.println("Adding first page"); > this.updatePage(pages[0]); > System.out.println("Adding second page"); > this.updatePage(pages[1]); > System.out.println("About to throw ex"); > throw new JetspeedException("Its gonna blow captain!"); > } > Finally, add pages is enabled for a Spring tx: > <prop > key="addPages*">PROPAGATION_REQUIRED,-org.apache.jetspeed.exception.JetspeedException</prop> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
