Julius Stroffek wrote:
Hi All,

I work on the DERBY-2220 and I found out that the function close of org.apache.derby.impl.drda.Database class contains the following code

    if (! forXA)
    {
        conn.rollback();
    }
    conn.close();
Does anybody know the reason for doing this? I can not find out any. In my opinion it makes no sense not to execute rollback if the socket is closed. There might be some special case for doing this but there are lot of cases when it makes no sense - like application crash.

With an XA transaction the connection (the logical connection as seen by the application) can be closed and the transaction remain active. The transaction's lifecycle is driven by the XAResource interface, not the Connection interface. I'm not sure how that ties into the above code, but it is the normal case.

Is it possible to re-word the summary of DERBY-2220?

"Transaction executed throught XAResource will held locks forever (until commit is executed) and also after the application terminates."

I think that summary gives the impression of a much bigger problem than really exists.

Dan.

Reply via email to