2017-05-11 2 views
0

Alles funktionierte gut, bis ich diesen Fehler in meiner Spring Batch-Anwendung bekam, weiß nicht, was die Ursache oder Lösung ist. Jede Referenz wird eine große Hilfe sein.Konnte java.util.concurrent.CopyOnWriteArrayList.readObject() nicht aufrufen Was könnte dieser Fehler bedeuten?

---- Debugging information ---- 
message    : Could not call java.util.concurrent.CopyOnWriteArrayList.readObject() 
cause-exception  : java.lang.RuntimeException 
cause-message  : null 
class    : java.util.HashMap 
required-type  : java.util.concurrent.CopyOnWriteArrayList 
path    : /map/entry/java.util.concurrent.CopyOnWriteArraySet/al/java.util.concurrent.CopyOnWriteArrayList 
line number   : -1 
------------------------------- 
     at com.thoughtworks.xstream.converters.reflection.SerializationMethodInvoker.callReadObject(SerializationMethodInvoker.java:88) 
     at com.thoughtworks.xstream.converters.reflection.SerializableConverter.doUnmarshal(SerializableConverter.java:386) 
     at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:150) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81) 
     at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:55) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:75) 
     at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:234) 
     at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:206) 
     at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:150) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81) 
     at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:55) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:75) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:59) 
     at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:77) 
     at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:79) 
     at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:66) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:81) 
     at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:55) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:75) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:59) 
     at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:142) 
     at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33) 
     at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:931) 
     at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:917) 
     at com.thoughtworks.xstream.XStream.fromXML(XStream.java:861) 
     at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853) 
     at org.springframework.batch.core.repository.dao.XStreamExecutionContextStringSerializer.deserialize(XStreamExecutionContextStringSerializer.java:110) 
     at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao$ExecutionContextRowMapper.mapRow(JdbcExecutionContextDao.java:322) 
     at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao$ExecutionContextRowMapper.mapRow(JdbcExecutionContextDao.java:308) 
     at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:92) 
     at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:60) 
     at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:649) 
     at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:587) 
     at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637) 
     at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:666) 
     at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:674) 
     at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:718) 
     at org.springframework.batch.core.repository.dao.JdbcExecutionContextDao.getExecutionContext(JdbcExecutionContextDao.java:112) 
     at org.springframework.batch.core.explore.support.SimpleJobExplorer.getJobExecutionDependencies(SimpleJobExplorer.java:191) 
     at org.springframework.batch.core.explore.support.SimpleJobExplorer.getJobExecutions(SimpleJobExplorer.java:80) 
     at org.springframework.batch.core.launch.support.SimpleJobOperator.startNextInstance(SimpleJobOperator.java:352) 
     at com.ccclogic.bi.utils.JobRegisteringOperator.startNextInstance(JobRegisteringOperator.java:69) 
     at com.ccclogic.bi.sync.framework.job.KinesisCDRExtractorJob.call(KinesisCDRExtractorJob.java:36) 
     at com.ccclogic.bi.sync.framework.job.KinesisCDRExtractorJob.call(KinesisCDRExtractorJob.java:20) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.RuntimeException 
     at com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:96) 
     at com.thoughtworks.xstream.io.ReaderWrapper.moveDown(ReaderWrapper.java:36) 
     at com.thoughtworks.xstream.io.path.PathTrackingReader.moveDown(PathTrackingReader.java:37) 
     at com.thoughtworks.xstream.converters.reflection.SerializableConverter$2.readFromStream(SerializableConverter.java:275) 
     at com.thoughtworks.xstream.core.util.CustomObjectInputStream.readObjectOverride(CustomObjectInputStream.java:86) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:364) 
     at java.util.concurrent.CopyOnWriteArrayList.readObject(CopyOnWriteArrayList.java:879) 
     at sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at com.thoughtworks.xstream.converters.reflection.SerializationMethodInvoker.callReadObject(SerializationMethodInvoker.java:84) 
     ... 49 more 
+0

Hat 'CopyOnWriteArayList' haben eine Methode' readObject'? – bradimus

+1

Scheint, es hängt mit der Xstream-Serialisierung zusammen. Hast du etwas damit verbunden? z.B. aktualisiert die Bibliothek, änderte Ihre Objektdefinitionen, .. – TmTron

Antwort

4

Es scheint, dass Ihre Liste von irgendwo während der Bearbeitung der Anfrage aktualisiert wird.

Es wird RuntimeException nur ausgelöst, wenn die Größe nicht übereinstimmt.

Es folgt aus AbstractPullReader.moveDown:

public void moveDown() { 
    int currentDepth = elementStack.size(); 
    while (elementStack.size() <= currentDepth) { 
     move(); 
     if (elementStack.size() < currentDepth) { 
      throw new RuntimeException(); // sanity check 
     } 
    } 
} 
+0

Was es Methode tut? Und wann heißt es? Ja, also habe ich Threads in einem Job erstellt, die wahrscheinlich den Ärger verursachen könnten. –

+1

Ich bin nicht 100% sicher, aber aus dem Ausnahme-Stack - Ihre Klasse JobRegisteringOperator.startNextInstance ruft einige Details aus der db und schob es in die Liste, die von anderen Threads verwendet wird. – Gaurav

+0

Zu meiner Überraschung wurde das Problem gelöst, als ich die 'BatchJob' Datenbank fallen ließ. :/Wird nie in der Lage sein, den wahren Grund herauszufinden. :/ –

Verwandte Themen