major
nice-to-have
defect
major
enhancement
(User-visible)
ConcurrencyManager, ContextScheme, LockingManager, LockingFactory, TokenScheme, and everything related to them is configured in an absurd format that no one can understand or explain, and it only leads to messages saying that strange things have to be configured somewhere just to make it work at all— editWrapper and editStructure. All of this has to go.
Improvement
Here’s how it works now: LockService
Open Issues
Release all locks at the end of the session.Lock strategies for structures independent of model-search.Admin view for releasing locks.Check for "Renew" when clicking "Apply."Saving must fail if a lock has expired.Store the timeout as a Long, since ResultSet.updateTimestamp() does not support time zones.Reintroduce the configured lock handler to the component.TokenService must execute SELECTs with "FOR UPDATE".Migrate individual cases: PMTProjectEditTokenHandler.Configure locks directly on the type.The TL_LOCK table is not cleaned up—unused entries remain.
Code Migration
- ConvertConcurrencyManager, ContextScheme, LockingManager, LockingFactory, TokenScheme, and everything related to them to LockService, TokenService, and Lock.
- EditComponent configuration: tokenHandler → lockHandler; tokenContextName is no longer used; lockOperation is new.
- Switch from *ConcurrencyScheme.xml to LockService configuration.
Data Migration
- The TOKEN table has been removed.
- Set up new tables in lock.schema.xml.
Test
- test.com.top_logic.model.search.locking.TestLockService