[ 
https://issues.apache.org/jira/browse/OFBIZ-1755?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Skip Dever updated OFBIZ-1755:
------------------------------

    Attachment: testcommit.zip

> Odd bug related to begin()/commit() transaction
> -----------------------------------------------
>
>                 Key: OFBIZ-1755
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-1755
>             Project: OFBiz
>          Issue Type: Bug
>          Components: ALL COMPONENTS
>    Affects Versions: SVN trunk
>            Reporter: Skip Dever
>         Attachments: testcommit.zip
>
>
> This bug is difficult to explain.  Worse, it is not 100% reproducable.  If 
> you run the enclosed testCommit() service right after starting up Ofbiz, it 
> happens every time.  However, subsequent invocations of testCommit() may or 
> may not cause the problem.  
> The attached code demonstrates the problem completely.  Just unzip in in your 
> hot-deploy folder, run ant, restart ofbiz and then using the service manager, 
> run "testCommit".   The attached view is based on ItemIssuance, so you must 
> have shipped an item or two.  However, I expect that the code could be 
> modified to use Party or whatever.
> To fully understand this bug, you must modify EntityListIterator.next() by 
> adding e.printStackTrace() right below:
>         } catch (SQLException e) {
> Otherwise, the real problem is masked by the following attempt at close();
> Basically, If you have an EntityListIterator. created as shown, then you 
> subsequently do a TransactionUtil.begin()  and TransactionUtil.commit(), the 
> next EntityListIterator.next() call results in the exception:
> java.sql.SQLException: ResultSet not open. Operation 'next' not permitted. 
> Verify that autocommit is OFF.
>         at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> ...
>         at 
> org.apache.commons.dbcp.DelegatingResultSet.next(DelegatingResultSet.java:169)
> ...
>         at org.ofbiz.test.Tests.testCommit(Tests.java:91)
> This bug did not exist in the MinervaConnectionFactory code.  I have only 
> just seen it because I was trying to move my code from a December 15th 
> release to the latest.
> I originally thought this only existed in Derby.  However, the same error 
> happens with Postgres.
> If you modify the test code by putting "isActiveTransaction" inside the 
> commit, it runs just fine.  This is of course because there is already an 
> active transaction and no commit() is really done.
> What is attempted here is a common thing whereby you read data, do some 
> computations, then write data in between begin() and commit().
> I may be doing it wrong, but the fact remains that this worked for me for 
> months until this latest download (which is probably long after the change 
> was made).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to