Abstract
XCRO currently supports the ability to create automated scheduled instructions for long-term deals, both, deals without an end date, and deals over multiple years. There are defects identified with some of the possible configurations as explained in this LBN.
When the deal has several accounts/instructions/sub-instructions, the deals take long to approve, occasionally resulting in erroneous scenarios where schedules are not created.
To prevent this situation, please follow the steps below to scale up the number of execution pods, increase the memory of the MongoDB database and increase the tolerance limit for the default of 2 minutes.
Pod scaling
Scale the pods up using the following commands
kubectl scale deployment execution -n <namespace> --replicas=10
kubectl scale deployment deal -n <namespace> --replicas=10
kubectl scale deployment dealdraft -n <namespace> --replicas=5
kubectl scale deployment cbs -n <namespace> --replicas=5
kubectl scale deployment dms -n <namespace> --replicas=5
kubectl scale deployment bff -n <namespace> --replicas=5
Note: The CBS pod must be completely stateless i.e. should not run any schedulers/timers.
MongoDB indexes
Login to the MongoDB shell and execute the following commands to create indexes
use xcro-db
db.execution.executions.createIndex({ scheduledOn: 1 }, { name: "idx_scheduledOn" } );
db.execution.executions.createIndex({ refId: 1 }, { name: "idx_refId" } );
db.execution.executions.createIndex({ status: 1 }, { name: "idx_status" } );
db.execution.executions.createIndex({ transactionType: 1 }, { name: "idx_transactionType" } );
db.execution.executions.createIndex({ sourceAccountNumber: 1 }, { name: "idx_sourceAccountNumber" } );
db.execution.executions.createIndex({ destinationAccountNumber: 1 }, { name: "idx_destinationAccountNumber" } );
Increase the MongoDB memory
Step 1: Execute the below command to get a list of parameters
db.adminCommand({getParameter: ‘*’})
Step 2: Check the value of the field "internalQueryExecMaxBlockingSortBytes", it defaults to be about 33,554,432 bytes (32MB)
Step 3: Increase the memory using the below command
db.adminCommand({"setParameter":1,"internalQueryExecMaxBlockingSortBytes": 104857600})
Tolerance window
Increase the tolerance window for executions
To increase time-frame of execution between getting picked up and actual scheduled time before it is failed (tolerance window), follow the steps below.
Step 1: Edit the config map
kubectl edit cm -n <namespace>
Step 2. Edit the value of the TOLERANCE_LIMIT_MINUTES. E.g. to set it to 10 minutes:
TOLERANCE_LIMIT_MINUTES: "10"
Step 3: Save the config map and scale down + scale up the eceproducer and ececonsumer pods
Impact and Resolution
After scaling up the pods, the creation of deals and the execution of schedules will be faster.
Increasing the MongoDB memory will result in larger reports being downloadable
Indexes help deal approval, reports and execution perform better by 2x to 5x
Increasing the tolerance window will ensure slower executions are still picked up and executed
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article