[
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.