Record Locking
Optimistic and pessimistic record locking with conflict resolution.
Found by static analysis of the 0.8.0 source. Links that only appear at runtime are not visible here.
Everything record_locks needs outside the starter set is declared. 5 links into starter modules are not, and every app has those.
A newer release exists: record_locks in 0.9.0.
Before you enable record_locks in 0.8.0
5 modules its code requires
✓ 0 declared5 not declared, in every app
Every module it requires is already in every starter app.
Already enabled in every starter app: 5 modules.
Before you disable record_locks in 0.8.0
0 modules require it in code
No module requires record_locks in code.
32 calls in this release could not be resolved, so this is not a guarantee.
requires ⚠ Gap into a module every starter app has (lower risk) Optional Collaboration In requires only, not seen in code In every starter appA dot takes its module's area colour. Each side lists the areas in the order of the map.Reads left to right: what uses it → record_locks → what it needs. Select a module to go to its row.Needs
In every app (5)
| Module | In code | requires | package.json |
|---|---|---|---|
Module: audit_logs | In code: Required · lib, subscriber, ui | requires: ⚠ Gap in every app | package.json: ✓ Declared |
3 places
| |||
Module: auth | In code: Required · api | requires: ⚠ Gap in every app | package.json: ✓ Declared |
3 places
| |||
Module: configs | In code: Required · lib, setup | requires: ⚠ Gap in every app | package.json: ✓ Declared |
2 places
| |||
Module: directory | In code: Required · api | requires: ⚠ Gap in every app | package.json: ✓ Declared |
1 place
| |||
Module: notifications | In code: Required · subscriber | requires: ⚠ Gap in every app | package.json: ✓ Declared |
16 places
and 6 more in | |||
Used by
No module uses record_locks in code or declares it in requires.
32 calls elsewhere could not be resolved, so this is not a guarantee.
Facts
Registers in DI (3)
recordLockService·packages/enterprise/src/modules/record_locks/di.ts:16crudMutationGuardService·packages/enterprise/src/modules/record_locks/di.ts:33commandOptimisticLockGuardService·packages/enterprise/src/modules/record_locks/di.ts:49
Emits events (13)
record_locks.lock.contended·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:506record_locks.lock.contended·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:690record_locks.lock.contended·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:723record_locks.lock.acquired·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:765record_locks.participant.joined·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:790record_locks.lock.released·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:871record_locks.participant.left·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:889record_locks.lock.force_released·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:927record_locks.incoming_changes.available·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:1215record_locks.record.deleted·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:1280record_locks.participant.left·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:1515record_locks.conflict.detected·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:1863record_locks.conflict.resolved·packages/enterprise/src/modules/record_locks/lib/recordLockService.ts:1925
Subscribes to events (8)
record_locks.conflict.detected·packages/enterprise/src/modules/record_locks/subscribers/conflict-detected-notification.ts:17record_locks.conflict.resolved·packages/enterprise/src/modules/record_locks/subscribers/conflict-resolved-notification.ts:13record_locks.incoming_changes.available·packages/enterprise/src/modules/record_locks/subscribers/incoming-changes-notification.ts:9record_locks.lock.contended·packages/enterprise/src/modules/record_locks/subscribers/lock-contended-notification.ts:9record_locks.lock.force_released·packages/enterprise/src/modules/record_locks/subscribers/lock-force-released-notification.ts:9record_locks.participant.joined·packages/enterprise/src/modules/record_locks/subscribers/participant-joined-notification.ts:6record_locks.participant.left·packages/enterprise/src/modules/record_locks/subscribers/participant-left-notification.ts:6record_locks.record.deleted·packages/enterprise/src/modules/record_locks/subscribers/record-deleted-notification.ts:6
Fills widget spots (3)
backend:record:current·packages/enterprise/src/modules/record_locks/widgets/injection-table.ts:4backend-mutation:global·packages/enterprise/src/modules/record_locks/widgets/injection-table.ts:11crud-form:*·packages/enterprise/src/modules/record_locks/widgets/injection-table.ts:18
Entities (2)
RecordLock·packages/enterprise/src/modules/record_locks/data/entities.ts:26RecordLockConflict·packages/enterprise/src/modules/record_locks/data/entities.ts:93