I have a Script Listener that "hears" Created and Updated events and creates either 1 or 2 sub-tasks depending on various conditions. The task creation is fine, but at least twice a week, the script creates duplicate issues.
I think this is happening because we have an integration to Salesforce (Go2Group CRM Plugin) which can cause an issue to be updated 2 times in a second, and therefore multiple instances of the listener may be running at once.
In the log, I can see that we are sometimes going straight from detecting 0 sub-tasks to detecting 4, so my guess is that sometimes, I'm trying to detect sub-tasks which exist but have not been indexed yet.
I tried calling the indexer in the script as I created each task, but saw no improvement in detection rate, so I removed that. Also tried re-declaring the sub-task collection later in the script, in case a few extra milliseconds might help, which really didn't.
What can I do to decrease the incidence of duplicates?
Would it make sense to focus on indexer performance, or add something else to the script, or just sleep for a second or two before trying to check for tasks?
Here's how I'm looking for duplicates in the script, and thanks for any ideas you have!
...
Collection subTasks = parentIssue.getSubTaskObjects()
if (!subTasks.find{it.getSummary().contains "Incident"}) {
Blah blah }