Details
-
Bug
-
Resolution: Won't Do
-
Minor
-
None
-
23.0.2.Final, 24.0.1.Final
-
None
-
- Configure batch subsystem to use JdbcRepository.
- Deploy a batch application with JPA and Bean Validation enabled.
- Perform checkpoint commit.
Description
As a regression due to WFLY-12393, when Bean Validation is enabled in a deployed batch application, a ClassNotFoundException will be thrown during checkpoint commit.
Simply adding the missing javax.validation.api dependency to the jberet-core module will fix this.
2021-08-23 17:52:33,253 ERROR [org.jberet] (Batch Thread - 5) JBERET000007: Failed to run job XXXXXX, , org.jberet.job.model.Job@68d7b80d: javax.batch.operations.BatchRuntimeException: JBERET000626: Failed to run UPDATE STEP_EXECUTION SET ENDTIME=?, BATCHSTATUS=?, EXITSTATUS=?, EXECUTIONEXCEPTION=?, PERSISTENTUSERDATA=?, READCOUNT=?, WRITECOUNT=?, COMMITCOUNT=?, ROLLBACKCOUNT=?, READSKIPCOUNT=?, PROCESSSKIPCOUNT=?, FILTERCOUNT=?, WRITESKIPCOUNT=?, READERCHECKPOINTINFO=?, WRITERCHECKPOINTINFO=? WHERE STEPEXECUTIONID=? at org.jberet.repository.JdbcRepository.updateStepExecution(JdbcRepository.java:720) at org.jberet.repository.JdbcRepository.savePersistentData(JdbcRepository.java:732) at org.wildfly.extension.batch.jberet.job.repository.JobRepositoryService.savePersistentData(JobRepositoryService.java:189) at org.wildfly.extension.batch.jberet.job.repository.JdbcJobRepositoryService.savePersistentData(JdbcJobRepositoryService.java:44) at org.jberet.runtime.context.StepContextImpl.savePersistentData(StepContextImpl.java:199) at org.jberet.runtime.runner.StepExecutionRunner.run(StepExecutionRunner.java:171) at org.jberet.runtime.runner.CompositeExecutionRunner.runStep(CompositeExecutionRunner.java:164) at org.jberet.runtime.runner.CompositeExecutionRunner.runFromHeadOrRestartPoint(CompositeExecutionRunner.java:88) at org.jberet.runtime.runner.JobExecutionRunner.run(JobExecutionRunner.java:60) at org.wildfly.extension.batch.jberet.deployment.BatchEnvironmentService$WildFlyBatchEnvironment$1.run(BatchEnvironmentService.java:189) at org.wildfly.extension.requestcontroller.ControlPointTask.run(ControlPointTask.java:46) at org.wildfly.extension.batch.jberet.thread.pool.WildFlyJobExecutor$1.run(WildFlyJobExecutor.java:72) at org.jberet.spi.JobExecutor$1.run(JobExecutor.java:99) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at org.jboss.threads.JBossThread.run(JBossThread.java:513) Caused by: javax.batch.operations.BatchRuntimeException: JBERET000653: Failed to deserialize: [...] at org.jberet.runtime.SerializableData.deserialize(SerializableData.java:112) at org.jberet.runtime.AbstractStepExecution.deserialize(AbstractStepExecution.java:169) at org.jberet.runtime.AbstractStepExecution.getException(AbstractStepExecution.java:104) at org.jberet.repository.JdbcRepository.updateStepExecution(JdbcRepository.java:703) ... 16 more Caused by: java.lang.ClassNotFoundException: javax.validation.constraints.NotNull from [Module "org.jberet.jberet-core" version 1.3.7.Final from local module loader @4883b407 (finder: local module finder @7d9d1a19 (roots: D:\wildfly-23.0.2.Final\modules,D:\wildfly-23.0.2.Final\modules\system\layers\base))] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java:830) at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1847) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2160) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2405) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2329) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2405) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2329) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2405) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2329) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:503) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:461) at java.util.HashSet.readObject(HashSet.java:341) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1184) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2296) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2405) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2329) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:503) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:461) at org.jberet.util.BatchUtil.bytesToSerializableObject(BatchUtil.java:113) at org.jberet.runtime.SerializableData.deserialize(SerializableData.java:108) ... 19 more