problème de commit : source inconnue
Bonjour,
J'ai un moteur de calcul qui crée plusieurs transactions. Le but étant de gérer un certain lotissement des centaines de milliers de données à traiter, pour qu'une transaction permette la gestion d'un nombre défini d'entrées. Par exemple, 100.000 entrées seront gérées par 100 transaction gérant chacune 1000 entrées.
A la fin de mon exécution, plus d'un millier de transactions ont été gérées. Parmi elles, deux aboutissent à une erreur dont je ne parviens pas à déterminer la cause :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| [27/11/08 15:23:16:938 CET] 0000004a SystemErr R org.springframework.orm.jdo.JdoSystemException: [3.8] La validation de la transaction a échoué.; nested exception is [3.8] La validation de la transaction a échoué.
[LiDO 3.1.1 build 678 utilisant le driver oracle.jdbc.driver.OracleDriver avec le JDK 1.4.2 de IBM Corporation]
javax.jdo.JDOException: [3.8] La validation de la transaction a échoué.
caused by:
java.lang.NullPointerException
at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code))
at xcalia.lido.internal.cache.shared.d.b(d.java(Compiled Code))
at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code))
at xcalia.lido.internal.cache.e.a(e.java(Compiled Code))
at xcalia.lido.internal.cache.e.a(e.java:115)
at xcalia.lido.internal.cache.c.a(c.java:126)
at xcalia.lido.f.p(f.java:607)
at xcalia.lido.f.commit(f.java:1656)
at org.springframework.orm.jdo.JdoTransactionManager.doCommit(JdoTransactionManager.java:376)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy2.eclatementMoteurListClePrimeFonctionelle(Unknown Source)
at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.startProcess(ThreadEclate.java:85)
at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.run(ThreadEclate.java:54)
[27/11/08 15:23:16:969 CET] 0000004a SystemErr R [LiDO 3.1.1 build 678 utilisant le driver oracle.jdbc.driver.OracleDriver avec le JDK 1.4.2 de IBM Corporation]
javax.jdo.JDOException: [3.8] La validation de la transaction a échoué.
caused by:
java.lang.NullPointerException
at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code))
at xcalia.lido.internal.cache.shared.d.b(d.java(Compiled Code))
at xcalia.lido.internal.cache.shared.d.a(d.java(Compiled Code))
at xcalia.lido.internal.cache.e.a(e.java(Compiled Code))
at xcalia.lido.internal.cache.e.a(e.java:115)
at xcalia.lido.internal.cache.c.a(c.java:126)
at xcalia.lido.f.p(f.java:607)
at xcalia.lido.f.commit(f.java:1656)
at org.springframework.orm.jdo.JdoTransactionManager.doCommit(JdoTransactionManager.java:376)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:267)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy2.eclatementMoteurListClePrimeFonctionelle(Unknown Source)
at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.startProcess(ThreadEclate.java:85)
at com.bnppa.sdf.oasis.services.all.engineEp.impl.ThreadEclate.run(ThreadEclate.java:54) |
Le point d'entrée Java créant la transaction est une méthode appellée eclatementMoteurListClePrimeFonctionelle, faisant elle-même appel à des méthodes nommées createXXX, updateXXXX, deleteXXXX, ou encore miseAJourXXXX. La transaction est définie comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <bean id="eclatementMassifCumule"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="oasisEngineEpTransactionManager"/>
<!-- The target is the clientServicesImpl defined above -->
<property name="target" ref="moteurEclatementCumuleImpl"/>
<!-- All method calls are encapsulated in a JDO transaction -->
<property name="transactionAttributes">
<props>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="miseAjour*">PROPAGATION_REQUIRED</prop>
<prop key="eclatementMoteurListClePrimeFonctionelle">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="getListClePrimeFonctionelleRange">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean> |
Y aurait-il un problème dans mon paramétrage ?