portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Sean Taylor (JIRA)" <jetspeed-...@portals.apache.org>
Subject [jira] Commented: (JS2-495) OJB + Spring Transactions broken
Date Fri, 24 Feb 2006 17:52:37 GMT
    [ 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:
For more information on JIRA, see:

To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org

View raw message