kim_purcell
Kilo Explorer

If you are trying to add a field to a large table, such as a Task, you may encounter a couple of issues on your instance. If you are trying to add a field to the Task table and it is taking much longer than the default UI transaction quote rule of 5 minutes, you may experience a blank screen and the change will not show up on the update set. Although the field has been created in the table, it may impact your instance in two ways:

  1. You'll have no record of it in the current update set.
  2. The field is created on the database, but the Dictionary record is missing.

This is likely occurring because your transaction is being timed out and canceled by a UI transactions quota rule. Transaction quotas allow administrators to define a quota policy for different types of transactions. Once defined, the quota rule can cancel any transaction that doesn't follow the policy and notifies you that it has been canceled. Typically, you'll get cancellation message like this:

Transaction_cancelled.jpg

The log also shows that this was canceled by the UI transactions quota rule (see also Viewing Cancelled Transactions😞

Transaction_cancelled_log.jpg

Administrators set transaction quotas to prevent poorly performing queries from using up system resources and preventing other transactions from running. To avoid this issue, you can reduce the size of the affected table or adjust the quota rules to allow the system modules to wait for the transaction to complete.

Clean up the affected table

To reduce the size of the table, you can delete unused records and/or columns to decrease the time required for the database transaction. By default, background scripts are exempt from UI transactions quota. Importing an update set to an instance where a table size is not reduced will not have the same issue as transactions from the update set import that will not time out.

Adjust the quota rules

This will allow the system modules to wait for the transaction to complete.

  1. Navigate to System Definition > Quota Rules.
  2. Select the UI Transactions rule.
  3. Add these conditions:
    • [URL] [does not contain] [sys_dictionary] — This allows deletion from the dictionary.
    • [URL] [does not contain] [sys_db_object] — This allows creation from the table.
    • [URL] [does not contain] [slushbucket.do] — This allows creation from the form.
    • [URL] [does not contain] [sys_remote_update_set.do] — This allows creation from an remote update set.
    • [URL] [does not contain] [sys_update_set.do] —   This allows creation from an update set.

The example below shows the [URL] [does not contain] [sys_dictionary] condition added to the transaction quota rule:

Quota_Transaction_Rule.jpg
This issue has been seen in quite a few patches and hot fixes in Calgary, Dublin and Eureka. You can subscribe to KB0547328: Adding a field to a large table such as Task is canceled by the "UI Transactions" Quota R... to be notified when the workaround, fixed in or description has been updated.