Bug #4404
ConditionException inside full transaction FOR EACH loop
0%
Description
There is a bug when a ConditionException
(excluding QuerryOffEndException
) is caught in the first iteration of a full transaction FOR EACH
block. It manifests itself by infinitely displaying the error dialog. An example is provided in the project attached.
The effort in this direction leads to AdaptiveQuery.sessionEvent()
, which is called with SESSION_CLOSING_NORMALLY
when the transaction is rollbacked by wa.tm.rollback(imple.undoLabel);
in BlockManager.processCondition()
. The results (of the query) are reset only if they are not already cached. However, a cache is made only at commit time, so at the end of each iteration of FOR EACH
. While the first iteration has no results cached, a rollback inside it will reset the results, and the for each will start iterate from the beginning.
The FOR EACH
error handling which causes transaction rollback should be analyzed in depth.