Project

General

Profile

Bug #4149

BlockManager and TransactionManager handle TransactionType.NONE incorrectly

Added by Greg Shah almost 5 years ago. Updated over 1 year ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
Due date:
% Done:

0%

billable:
No
vendor_id:
GCD
case_num:
version_reported:
version_resolved:

Related issues

Related to Database - Bug #4035: newly created record is not flushed at the right time Closed
Related to Base Language - Support #4032: block/transaction processing context-local and other performance improvements New

History

#1 Updated by Greg Shah almost 5 years ago

  • Related to Bug #4035: newly created record is not flushed at the right time added

#2 Updated by Greg Shah almost 5 years ago

There are 3 major issues that need attention:

  • TransactionManager does not protect many registrations or notifications of Commitables, Finalizables or Undoables.
  • BlockManager does not protect processing related to these notifications (e.g. tm.processValidate()).
  • Many Scopables have no protection for processing based on block types or transaction types (some Scopables do have protection).

The result of this is that DO blocks that are implemented with BlockManager support are often mis-processed as sub-transaction blocks instead of TransactionType.NONE. This is potentially resulting in incorrect transaction processing behavior. It is also a place where we are doing more processing than is necessary which is a potential performance improvement.

#3 Updated by Greg Shah about 3 years ago

  • Related to Support #4032: block/transaction processing context-local and other performance improvements added

#4 Updated by Constantin Asofiei over 1 year ago

Finalizable.entry() is deprecated and needs to be removed, together with TransactionManager.processEntry() - I can't find any Finalizable implementation where entry() is implemented.

#5 Updated by Constantin Asofiei over 1 year ago

Constantin Asofiei wrote:

Finalizable.entry() is deprecated and needs to be removed, together with TransactionManager.processEntry() - I can't find any Finalizable implementation where entry() is implemented.

Greg, do you recall why Finalizable.entry was added? I can't find any implementation, and I'd like to remove it.

#6 Updated by Greg Shah over 1 year ago

Constantin Asofiei wrote:

Constantin Asofiei wrote:

Finalizable.entry() is deprecated and needs to be removed, together with TransactionManager.processEntry() - I can't find any Finalizable implementation where entry() is implemented.

Greg, do you recall why Finalizable.entry was added? I can't find any implementation, and I'd like to remove it.

I added it in revision 11347.1.75 in preparation for Eric's work with the SavepointManager (and UNDO rework) in revision 11347.1.79. If I recall correctly, we were missing a mechansim that could be used to snapshot things at the same point in processing as can be done with iterate().

Also available in: Atom PDF