Today just a quick post about a problem with the taks execution of scheduled ICCSAP archiving tasks in Content Navigator.
IBM Content Navigator record each task execution in the TASK_EXREC table of you Content Navigator configuration database. In an ICCSAP archiving scenario where many scheduled task are running in the system this table can increase rapidly. In the specfiic case we had nearly 3.5 million entries in this table. Which cause the new scheduled task to crash. In the SystemOut.log of the ICN WebSphere server instance we could see this error.
Throwable occurred: org.apache.openjpa.util.MetaDataException: The type “class com.ibm.ecm.task.entities.ApplicationLock” has not been enhanced.
at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1834)
at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1808)
at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:828)
at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:725)
at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:649)
at org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:417)
at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:388)
at org.apache.openjpa.persistence.meta.MetamodelImpl.(MetamodelImpl.java:85)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.getMetamodel(EntityManagerFactoryImpl.java:350)
at org.apache.openjpa.persistence.EntityManagerFactoryImpl.getCriteriaBuilder(EntityManagerFactoryImpl.java:334)
at org.apache.openjpa.persistence.EntityManagerImpl.getCriteriaBuilder(EntityManagerImpl.java:1664)
at org.apache.openjpa.persistence.EntityManagerImpl.getCriteriaBuilder(EntityManagerImpl.java:102)
at com.ibm.ecm.task.entities.controller.EntitiesMediator.getAllActiveCalendarTasks(EntitiesMediator.java:1761)
at com.ibm.ecm.task.TimerChecker.timerExpired(TimerChecker.java:44)
at com.ibm.ws.asynchbeans.timer.TimerImpl.callListenerMethod(TimerImpl.java:361)
at com.ibm.ws.asynchbeans.timer.GenericTimer.run(GenericTimer.java:228)
at com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:267)
at java.security.AccessController.doPrivileged(AccessController.java:424)
at javax.security.auth.Subject.doAs(Subject.java:495)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:133)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:91)
at com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:338)
at java.security.AccessController.doPrivileged(AccessController.java:453)
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1174)
at com.ibm.ws.asynchbeans.timer.TimerImpl.runListenerAsCJWork(TimerImpl.java:490)
at com.ibm.ws.asynchbeans.am._Alarm.fireAlarm(_Alarm.java:340)
at com.ibm.ws.asynchbeans.am._Alarm.run(_Alarm.java:237)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)
[10/11/20 17:04:55:959 CEST] 0000006e SystemErr R Oct 11, 2020 5:04:55 PM TimerChecker timerExpired
So it seems that some kind of timeout occurs and the task is failing. The only solution was to clear the TASK_EXREC and TASKAUDIT table. After we reduced the amount of data in the table the taskmanager continues without problems running the schedules tasks.
So at this point we decided to create some maintenance tasks for our Content Navigator configuration database to prevent this in the future, as there is no out of the box housekeeping job provided by Content Navigator at the moment.