For task execution,Access Governance Suite passes a TaskSchedule object to the Quartz scheduler package. The scheduler thread parses TaskSchedule objects, assigns each object to a thread, and cleans up after completion. Each TaskSchedule object references a TaskDefinition ("executor" attribute). However, TaskSchedule objects do not contain timing/state attributes (such as suspended, ready, executing, terminated, error value).
When Access Governance Suite shows a large/unexpected number of TaskSchedule objects, then the list could contain objects that actually completed or never going to start. Due to unexpected task deletions or Access Governance Suite shutdowns, the Quartz scheduler could miss the cleanup. ETN 6278 resolved a NPE from objects with stale,non-existant executor values.
If env has a manageable number of task schedule objects, then a direct approach uses "iiq console" to cleanup. Preferrably, perform the cleanup when Access Governance Suite is not running. Determining whether a TaskSchedule object is "orphaned" or trying to launch a task gets difficult in a running env. Also, after Access Governance Suite stops, then cleanup can remove any task schedule object with the "Immediate task runner" description:
0) if possible, then stop Access Governance Suite
1) start "iiq console" tool
2) export TaskSchedule to file
3) verify "executor" attrs as valid TaskDefinition ids
4) remove TaskSchedule objects with bad "executor" attr
4a) if Access Governance Suite stopped, then remove TaskSchedule objects
with "Immediate task runner" description
5) delete all TaskSchedule objects
6) import the "scrubbed" file of TaskSchedule objects