When a user creates or updates a field on a large table from the UI (for example, Task), the transaction may time out and be canceled by the UI Transactions Quota Rule.
This can affect the instance in different ways:
- the database operation fails and the field is not created or altered;
- the user transaction is canceled and the update is is not captured in the current update set.
Steps to Reproduce
- Identify a large table with numerous columns and populated with a million records or more.
- Choose the current Update Set.
- Follow one of these scenarios:
- Create a new field from the system dictionary or from the table maintenance
- Update the dictionary record of a field to increase the max_length
Observe the screen going blank after several minutes. The following may have occurred:
- The field has been created in the table, but there is no record of it in the current Update Set.
- The field was created on the database, but the related Dictionary record is missing.
- The field length change is not done on the database, but the Dictionary record is updated. If the field was being extended, longer values will not be stored. There is no update record in the current Update Set.
1. If creating a new field, use the Form/List Configuration slushbucket. This will create the new field(s) using a Progress Worker which is not subject to UI Transaction Quota rules.
2. If possible, reduce the size of the affected table.
Table changes done via UI, such as adding and removing fields, or extending fields length, are commonly done on a Development instance in order to be captured in Update Sets and promoted.
If the issue occurs, for example on Task table, it likely has a large number of records (over a million). Simply reducing the number of records or excluding them during a clone prevents the issue.
Update Set commits are not user actions and are not canceled by UI Transactions Quota Rule, so the issue does not occur when deploying such Update Sets.
Adjust the Quota Rules to allow relevant system modules to wait longer for the database transaction to complete. Use these steps cautiously as they may affect instance performance.
- Navigate to System Definition > Quota Rules.
- Select the UI Transactions rule.
- Add these as AND conditions:
- URL does not contain sys_dictionary
- URL does not contain sys_db_object
- URL does not contain slushbucket.do
- URL does not contain sys_remote_update_set.do
- URL does not contain sys_update_set.do
Related Problem: PRB597639