[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query.

Hello Samba,

The problem is that the session bean method is taking longer than the time allowed for the transaction, causing the transaction to timeout. It is an EJB problem, not necessarily JPA, its just that JPA is configured to use the connection associated to the transaction (JTA) for reads, and so reports the exception before the container does. You can either break up the transaction into smaller chunks, or increase the timeout value for transactions - I'm not that familiar with WebLogic settings so I can't comment on how to change the timeout value.

Best Regards,
Chris

Samba wrote:
Hi I'm using eclipselink 1.0.2 from Jdeveloper 11.1.0.1 and MySQL as database.

I'm running a java client to test the written functionality in a Session Bean deployed to weblogic server (default in jdeveloper).
and I'm getting the error
[code]
/Communication failure detected when attempting to perform read query outside of a transaction. Attempting to retry query.
[EL Warning]: 2009.03.28 22:02:29.140--UnitOfWork(8724084)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.0.2 (Build 20081024)): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Transaction BEA1-00032CA83BB89E472B1E not active anymore. tx status = Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 31 seconds
BEA1-00032CA83BB89E472B1E]
Error Code: 0
Call: SQLCall(SELECT latitude, longitude, zipcode, city, country_code, ip_start, region_code FROM ip_group_city WHERE (ip_start <= ?) ORDER BY ip_start DESC)
Query: ReadAllQuery(com.gamyam.product.geoip.model.IPGroupCity)



Here is the stacktrace:

javax.ejb.EJBException: EJB Exception: ; nested exception is:
Exception [EclipseLink-23009] (Eclipse Persistence Services - 1.0.2 (Build 20081024)): org.eclipse.persistence.exceptions.TransactionException
Exception Description: Error marking externally managed transaction for rollback
Internal Exception: java.lang.IllegalStateException: Cannot mark the transaction for rollback. xid=BEA1-00032CA83BB89E472B1E, status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 31 seconds
BEA1-00032CA83BB89E472B1E]
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:105)
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:87)
at $Proxy10.fetchLocation(Unknown Source)
at com.gamyam.product.geoip.model.GeoIPServiceClient.main(GeoIPServiceClient.java:60)
Caused by: Exception [EclipseLink-23009] (Eclipse Persistence Services - 1.0.2 (Build 20081024)): org.eclipse.persistence.exceptions.TransactionException
Exception Description: Error marking externally managed transaction for rollback
Internal Exception: java.lang.IllegalStateException: Cannot mark the transaction for rollback. xid=BEA1-00032CA83BB89E472B1E, status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 31 seconds
BEA1-00032CA83BB89E472B1E]
at org.eclipse.persistence.exceptions.TransactionException.errorMarkingTransactionForRollback(TransactionException.java:103)
at org.eclipse.persistence.transaction.AbstractTransactionController.markTransactionForRollback(AbstractTransactionController.java:198)
at org.eclipse.persistence.internal.jpa.transaction.JTATransactionWrapper.setRollbackOnlyInternal(JTATransactionWrapper.java:83)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.setRollbackOnly(EntityManagerImpl.java:946)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setRollbackOnly(EJBQueryImpl.java:941)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getSingleResult(EJBQueryImpl.java:567)
at com.gamyam.product.geoip.model.GeoIPServiceProvider.fetchLocation(GeoIPServiceProvider.java:159)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:15)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:30)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy90.fetchLocation(Unknown Source)
at com.gamyam.product.geoip.model.GeoIPService_2uw13f_GeoIPServiceImpl.fetchLocation(GeoIPService_2uw13f_GeoIPServiceImpl.java:610)
at com.gamyam.product.geoip.model.GeoIPService_2uw13f_GeoIPServiceImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:589)
at weblogic.rmi.cluster.ClusterableServerRef.invoke(ClusterableServerRef.java:230)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:477)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:473)
at weblogic.rmi.internal.wls.WLSExecuteRequest.run(WLSExecuteRequest.java:118)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: java.lang.IllegalStateException: Cannot mark the transaction for rollback. xid=BEA1-00032CA83BB89E472B1E, status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 31 seconds
BEA1-00032CA83BB89E472B1E]
at weblogic.transaction.internal.TransactionImpl.throwIllegalStateException(TransactionImpl.java:1829)
at weblogic.transaction.internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:549)
at weblogic.transaction.internal.TransactionManagerImpl.setRollbackOnly(TransactionManagerImpl.java:316)
at weblogic.transaction.internal.TransactionManagerImpl.setRollbackOnly(TransactionManagerImpl.java:309)
at org.eclipse.persistence.transaction.JTATransactionController.markTransactionForRollback_impl(JTATransactionController.java:145)
at org.eclipse.persistence.transaction.AbstractTransactionController.markTransactionForRollback(AbstractTransactionController.java:196)
... 37 more
Process exited with exit code 0.


Here is my fetchLocation() method:
public IPGroupCity fetchLocation(String ip){
//String sql="SELECT * FROM `ip_group_city` where `ip_start` <= ((INET_ATON(?1))/256) order by ip_start desc limit 1";
Query query = em.createNamedQuery("findLocationForIP");
int ipNumber = GeoIPUtils.convertIPStringToNumber(ip);
query.setParameter("ipNumber",ipNumber);
query.setHint("eclipselink.jdbc.fetch-size",1);
IPGroupCity location= (IPGroupCity) query.getSingleResult();
return location;
}/


[/code]

Can you help me find out why eclipselink could not fetch the result of my query?
and what I need to to do to fix this...


Thanks and Regards,
Samba

------------------------------------------------------------------------

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users