Introduction
This article explains the limitations of identifier allocation in distributed Mendix runtime environments.
Environment
Applications hosted in any deployment type
Details
Mendix runtime allocates object identifiers in batches and stores them in memory.
Each runtime instance manages identifier batches independently. However, all runtime instances update the same [MendixSystem]$EntityIdentifier table in the database.
Under high concurrency, contention can occur when multiple runtime instances reserve identifiers for the same entity type.
The runtime dynamically increases identifier batch size over time until reaching the IdentifierReservationMaximum limit.
The default maximum value is 10000.
The batch size increase occurs locally per runtime instance.
Current limitations include:
- Shared database row updates per entity
- Increased contention across runtime instances during high concurrency
- No configuration for minimum batch size
- No configuration available to change the batch size increase step
In high-load scenarios, batch size increases may not occur quickly enough to prevent contention.
This behavior is part of the current identifier allocation design
Internal information related
- 273674
- C5SASDZBN/p1773287571649739
Additional information
Related KBA: What-is-the-ConnectionBusRuntimeException-Failed-to-retrieve-new-set-of-identifiers-log-line
0 Comments