AAI not fully initializing after startup, and is stuck running the same queries over and over again.
There can be several scenarios that cause this.
Below are some examples:
During startup log shows
WARN [CurrentStateVendorImpl] Invalid data found in CurrentState table. Will attempt fixup.
INFO [QueryTimingService] <80> "from CurrentStateThin where mostRecentRunId is not null"
QueryTimingService messages repeatedly show:
INFO [QueryTimingService] 100.0% of last 0:01:00 spent in DB/API operations (possibly on multiple threads/overlapping queries)
100.0%: 8x (avg. time: 7.501) query: select id from JobRun where id in (:ids)
Log messages like:
WARN [JawsDbIntegrityUtil] Found 904 jobRunIds in the RecentStateType table that did NOT exist. Attempting to correct.
You may also see:
ERROR [JammerManager] Interrupted: com.termalabs.server.cache.RunCacheNotInitializedException: Could not initialize run cache.
at com.termalabs.server.autosys.cache.AutosysNewRunCache.initializeData(AutosysNewRunCache.java:457)
at com.termalabs.server.autosys.cache.AutosysNewRunCache.initialize(AutosysNewRunCache.java:423)
at com.termalabs.server.autosys.cache.AutosysNewRunCache.getMostRecentlyStartedRunForEachJob(AutosysNewRunCache.java:388)
at com.termalabs.server.cache.JobRunVendorImpl.loadMostRecentRuns(JobRunVendorImpl.java:789)
at com.termalabs.server.cache.JobRunVendorImpl.setUpMostRecentRuns(JobRunVendorImpl.java:703)
at com.termalabs.server.system.JammerManager.doFirstTimeProcessing(JammerManager.java:403)
at com.termalabs.server.system.JammerManager.run2(JammerManager.java:308)
at com.termalabs.server.system.JammerManager.run(JammerManager.java:238)
at com.termalabs.server.system.ApplicationControllerService$2.run(ApplicationControllerService.java:268)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
Caused by: com.termalabs.common.datastore.DataAccessException: Error while executing query: "from JobRun jr left join fetch jr.parent left join fetch jr.job job left join fetch job.type left join fetch jr.predecessors where jr.scheduler.id = :schedulerId and jr.startTimeValue >= :fromTime and jr.futureRun = false order by jr.startTimeValue, jr.endTime"; schedulerId=UUID[AXoftDMHAHU=], fromTime=2022/05/18 10:59:41.000 PDT
at com.termalabs.common.connection.hibernate.RichQueryCommon.executeAndTime(RichQueryCommon.java:1047)
at com.termalabs.common.connection.hibernate.RichQueryCommon.list(RichQueryCommon.java:969)
at com.termalabs.server.hibernate.RichQuery$CollectionQuery.asSetUnfiltered(RichQuery.java:175)
at com.termalabs.server.hibernate.RichQuery$CollectionQuery.asSet(RichQuery.java:155)
at com.termalabs.server.hibernate.jaws.HibernateJobRunData.getMostRecentRuns(HibernateJobRunData.java:572)
at com.termalabs.server.autosys.cache.AutosysNewRunCache$CacheData.initialize(AutosysNewRunCache.java:781)
at com.termalabs.server.autosys.cache.AutosysNewRunCache$CacheData.access$100(AutosysNewRunCache.java:722)
... 10 in common
Caused by: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.termalabs.common.hibernate.jaws.JobRun#UUID[AYDdRABXDOA=]]
Release : 6.0.2
Component : AUTOMIC AUTOMATION INTELLIGENCE ENGINE
There are some known data inconsistency scenarios sometimes occur.
If you are running 6.4.2-2 or later you can follow the steps below to run these steps automatically.
1. Stop the AAI service
2. Go to the <Install Dir>/config director on your AAI server.
3. Run the following command:
java -Dswing.aatext=true -jar config.jar datainconsistency --remediate <Path to <Install Dir>/jboss directory>
For example if AAI is installed at /opt/aai your command would be:
java -Dswing.aatext=true -jar config.jar datainconsistency --remediate /opt/aai/jboss
You should see output like below, if anything is updated it will display in the output.
Starting Config Tool
Checking if the Automic Automation Intelligence (AAI) server is running
The Automic Automation Intelligence (AAI) server is not running
Fixing Data Inconsistencies. Please do no start AAI service while running fix
Fixing missing parent JobRuns
Fixed missing parent JobRuns. 0 rows affected.
Fixing missing predecessor runs
Fixed missing predecessor runs. 0 rows affected.
Fixing missing successor JobRuns
Fixed missing successor JobRuns. 0 rows affected.
Fixing missing job runs in JobStreamRuns
Fixed missing job runs in JobStreamRuns. 0 rows affected.
Fixing missing JobRun references in RecentState
Fixing missing JobRun references in RecentState. 0 rows affected.
Fixing invalid dependent job condition reference
Fixed invalid dependent job condition reference. 0 rows affected.
All Data Inconsistencies fixed. Exiting..
4. Start up the AAI service.
If you are on an earlier release follow the steps below:
If you should run into this scenario run the select queries below. If any queries return a non zero result, run the update or delete statements listed below them.
Only start up services after all the select queries return 0.
1. References to missing parent job runs
select s.schedulerName, count(*) from JobRun jr, JobScheduler s where jr.parentJobRunId not in (select jobRunId from JobRun) and jr.jobSchedulerId = s.jobSchedulerId group by s.schedulerName
-- resolution
update JobRun
set parentJobRunId = null
where parentJobRunId not in (select jobRunId from JobRun)
2. References to missing predecessor runs
select count(*) from JobRun_PredJobRun where predJobRunId not in (select jobRunId from JobRun)
--resolution
delete from JobRun_PredJobRun
where predJobRunId not in (select jobRunId from JobRun)
3. Missing successor job runs
select count(*) from JobRun_PredJobRun where jobRunId not in (select jobRunId from JobRun)
-resolution
delete from JobRun_PredJobRun
where jobRunId not in (select jobRunId from JobRun)
4. Missing job runs in jobstream runs
select count(*) from JobStreamRun_JobRun where jobRunId not in (select jobRunId from JobRun)
--resolution
delete from JobStreamRun_JobRun
where jobRunId not in (select jobRunId from JobRun)
5. Missing job run references in recent state
select count(*) from RecentStateType where jobRunId not in (select jobRunId from JobRun)
--resolution
update RecentStateType
set jobRunId = null
where jobRunId not in (select jobRunId from JobRun)
6. Invalid dependent job condition reference
select count(*) from JobCondition where dependantJobId not in (select jobId from JawsJob)
--resolution
select s.schedulerName, jj.jobId, jj.jobName from JawsJob jj, JobScheduler s where jj.jobName LIKE 'missing%' and jj.jobSchedulerId = s.jobSchedulerId
update JobCondition
set dependantJobId = 'MISSING_JOB_ID for appropriate SCHEDULER'
where dependantJobId not in (select jobId from JawsJob)
See also the KB article below for another database issue that could prevent AAI from starting:
https://knowledge.broadcom.com/external/article?articleId=194479