Attention: Confluence is not suitable for the storage of highly confidential data. Please ensure that any data classified as Highly Protected is stored using a more secure platform.
If you have any questions, please refer to the University's data classification guide or contact ict.askcyber@sydney.edu.au

Skip to end of banner
Go to start of banner

TAP-902 CPU Time limit Analysis and Simulation

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 15 Next »

Items Fixed by Flow Optimization

  • Too many SOQL queries: 201 Flow "Populate Chart of Accounts in Transaction"

  • Batch closing error - We can't save this record because the “Create a link to a Third Party Pledge” process failed (DUPLICATE_VALUE: Maximum number of duplicate updates in one batch (12 allowed). )

Defect

891-002

  1. Payment batch creation

    1. Create a single batch record to create a payment across all created transactions under all the gift records in all the accounts from the intial batch created

    2. Confirm that the batch successfully closes

      1. confirm to see that all gift records' balances are 0 and transactions are created to act as payment to the intial transaction records created

    3. if the batch fails, Utility log log record will be created

Record Involved:

  • 1 Batch record

  • 11 Batch Items

  • 36 - 45 Transaction records per Batch Item

All steps should be executed successfully

FAIL

Batch 0076229 | Batch | Salesforce

20230529-2338 | UtilityLog | Salesforce

 

TECHNICAL FACTORS

  • Current Batch class by AQ (Managed packaged), code is hidden, thus, we cannot control the default size of the batch which is 10

  • There are Process Builder and Flow by AQ which design are also hidden:

    • Contact Default CAE Category

    • tbc--

  • One Usyd flow that were disabled to isolate testing

    • USYD_Transactions_afterInsertUpdate

SIMULATIONS/REPLICATIONS DONE:

  1. MS tried to replicate the batch processing in SIT with lower batch size parameter of 1 in this record:

Batch 0076241 Record in SIT (10 batch items, with average of 35 to 45 Batch Items Transactions)

Ran this in execute anonymous in developer console:

String smartBatchId = 'a0ZBn000000Yx45MAC';
AQB.ProcessBatchItems aqSmartBatch = new AQB.ProcessBatchItems(smartBatchId);
Database.executeBatch(aqSmartBatch, 1);

End Result: The batch record was closed successfully

2. MS also tested in RommelTest Sandbox with the latest version 24.0.1 - Batch 0075201 (10 batch items, with average of 35 to 45 Batch Items Transactions)

NOTE: The design of flows in RommelTest sandbox is the same with PROD (no optimization done yet)

1st Testing (Using the normal Close Batch button, the result is the same, we hit the CPU time limit issue

2nd Testing using the script with 1 batch size via execute anonymous in developer console, the Batch was closed successfully

3. Testing in UAT:

Unit Testing Variables:

  • 10 Batch Items of different accounts

  • 36 Transactions each Batch Item with payments, 2 of which no payments

Unit Testing Steps: Test User - Ana Simic

  1. Created Batch record with Batch items and transaction records comparable to original related Production record.

  2. Closed batch and received error on Utility Log (CPU limit not indicated on Details as UAT has different AQ package version).

  3. Close the batch record using anonymous Apex script

String smartBatchId = 'a0ZBm000000AdT7MAK';
AQB.ProcessBatchItems aqSmartBatch = new AQB.ProcessBatchItems(smartBatchId);
Database.executeBatch(aqSmartBatch, 1);

4. Received a successful log.

5. Batch Record was closed successfully

  • No labels