Re: Upgrade from 2.1.0 to 2.4.0 resulting in error within transaction block
I've just fixed possible root cause in master [1]. However, as exact use case details is not known, may be it was something else. Is it possible to provide more info on the use case: cache configuratioh, model classes? [1] https://issues.apache.org/jira/browse/IGNITE-8147 On Mon, Apr 2, 2018 at 12:21 PM, Yakov Zhdanov wrote: > Cross posting to dev. > > Vladimir Ozerov, can you please take a look at NPE from query processor > (see below - GridQueryProcessor.typeByValue(GridQueryProcessor.java:1901) > )? > > --Yakov > > 2018-03-29 0:19 GMT+03:00 smurphy : > >> Code works in Ignite 2.1.0. Upgrading to 2.4.0 produces the stack trace >> below. The delete statement that is causing the error is: >> >> SqlFieldsQuery sqlQuery = new SqlFieldsQuery("delete from EngineFragment >> where " + criteria()); >> fragmentCache.query(sqlQuery.setArgs(criteria.getArgs())); >> >> The code above is called from within a transactional block managed by a >> PlatformTransactionManager which is in turn managed by Spring's >> ChainedTransactionManager. If the @Transactional annotation is removed >> from >> the surrounding code, then the code works ok... >> >> 2018-03-28 15:50:05,748 WARN [engine 127.0.0.1] progress_monitor_2 >> unknown >> unknown {ProgressMonitorImpl.java:112} - Scan >> [ec7af5e8-a773-40fd-9722-f81103de73dc] is unable to process! >> javax.cache.CacheException: Failed to process key '247002' >> at >> org.apache.ignite.internal.processors.cache.IgniteCacheProxy >> Impl.query(IgniteCacheProxyImpl.java:618) >> at >> org.apache.ignite.internal.processors.cache.IgniteCacheProxy >> Impl.query(IgniteCacheProxyImpl.java:557) >> at >> org.apache.ignite.internal.processors.cache.GatewayProtected >> CacheProxy.query(GatewayProtectedCacheProxy.java:382) >> at >> com.company.core.dao.ignite.IgniteFragmentDao.delete(IgniteF >> ragmentDao.java:143) >> at >> com.company.core.dao.ignite.IgniteFragmentDao$$FastClassBySp >> ringCGLIB$$c520aa1b.invoke() >> at org.springframework.cglib.proxy.MethodProxy.invoke(MethodPro >> xy.java:204) >> at >> org.springframework.aop.framework.CglibAopProxy$CglibMethodI >> nvocation.invokeJoinpoint(CglibAopProxy.java:720) >> at >> org.springframework.aop.framework.ReflectiveMethodInvocation >> .proceed(ReflectiveMethodInvocation.java:157) >> at >> org.springframework.dao.support.PersistenceExceptionTranslat >> ionInterceptor.invoke(PersistenceExceptionTranslationInterce >> ptor.java:136) >> at >> org.springframework.aop.framework.ReflectiveMethodInvocation >> .proceed(ReflectiveMethodInvocation.java:179) >> at >> org.springframework.aop.framework.CglibAopProxy$DynamicAdvis >> edInterceptor.intercept(CglibAopProxy.java:655) >> at >> com.company.core.dao.ignite.IgniteFragmentDao$$EnhancerBySpr >> ingCGLIB$$ce60f71c.delete() >> at >> com.company.core.core.service.impl.InternalScanServiceImpl.p >> urgeScanFromGrid(InternalScanServiceImpl.java:455) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce >> ssorImpl.java:62) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >> thodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:498) >> at >> org.springframework.aop.support.AopUtils.invokeJoinpointUsin >> gReflection(AopUtils.java:302) >> at >> org.springframework.aop.framework.JdkDynamicAopProxy.invoke( >> JdkDynamicAopProxy.java:202) >> at com.sun.proxy.$Proxy417.purgeScanFromGrid(Unknown Source) >> at com.company.core.core.async.tasks.PurgeTask.process(PurgeTas >> k.java:85) >> at sun.reflect.GeneratedMethodAccessor197.invoke(Unknown Source) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe >> thodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:498) >> at >> org.springframework.aop.support.AopUtils.invokeJoinpointUsin >> gReflection(AopUtils.java:302) >> at >> org.springframework.aop.framework.ReflectiveMethodInvocation >> .invokeJoinpoint(ReflectiveMethodInvocation.java:190) >> at >> org.springframework.aop.framework.ReflectiveMethodInvocation >> .proceed(ReflectiveMethodInvocation.java:157) >> at >> org.springframework.transaction.interceptor.TransactionInter >> ceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) >> at >> org.springframework.transaction.interceptor.TransactionAspec >> tSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) >> at >> org.springframework.transaction.interceptor.TransactionInter >> ceptor.invoke(TransactionInterceptor.java:96) >> at >> org.springframework.aop.framework.ReflectiveMethodInvocation >> .proceed(ReflectiveMethodInvocation.java:179) >> at >> org.springframework.aop.framework.JdkDynamicAopProxy.invoke( >> JdkDynamicAopProxy.
Re: Upgrade from 2.1.0 to 2.4.0 resulting in error within transaction block
Cross posting to dev. Vladimir Ozerov, can you please take a look at NPE from query processor (see below - GridQueryProcessor.typeByValue(GridQueryProcessor.java:1901))? --Yakov 2018-03-29 0:19 GMT+03:00 smurphy : > Code works in Ignite 2.1.0. Upgrading to 2.4.0 produces the stack trace > below. The delete statement that is causing the error is: > > SqlFieldsQuery sqlQuery = new SqlFieldsQuery("delete from EngineFragment > where " + criteria()); > fragmentCache.query(sqlQuery.setArgs(criteria.getArgs())); > > The code above is called from within a transactional block managed by a > PlatformTransactionManager which is in turn managed by Spring's > ChainedTransactionManager. If the @Transactional annotation is removed from > the surrounding code, then the code works ok... > > 2018-03-28 15:50:05,748 WARN [engine 127.0.0.1] progress_monitor_2 unknown > unknown {ProgressMonitorImpl.java:112} - Scan > [ec7af5e8-a773-40fd-9722-f81103de73dc] is unable to process! > javax.cache.CacheException: Failed to process key '247002' > at > org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query( > IgniteCacheProxyImpl.java:618) > at > org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.query( > IgniteCacheProxyImpl.java:557) > at > org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy. > query(GatewayProtectedCacheProxy.java:382) > at > com.company.core.dao.ignite.IgniteFragmentDao.delete( > IgniteFragmentDao.java:143) > at > com.company.core.dao.ignite.IgniteFragmentDao$$FastClassBySpringCGLIB$$ > c520aa1b.invoke() > at org.springframework.cglib.proxy.MethodProxy.invoke( > MethodProxy.java:204) > at > org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation. > invokeJoinpoint(CglibAopProxy.java:720) > at > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:157) > at > org.springframework.dao.support.PersistenceExceptionTranslatio > nInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136) > at > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:179) > at > org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor. > intercept(CglibAopProxy.java:655) > at > com.company.core.dao.ignite.IgniteFragmentDao$$EnhancerBySpringCGLIB$$ > ce60f71c.delete() > at > com.company.core.core.service.impl.InternalScanServiceImpl. > purgeScanFromGrid(InternalScanServiceImpl.java:455) > 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 > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection > (AopUtils.java:302) > at > org.springframework.aop.framework.JdkDynamicAopProxy. > invoke(JdkDynamicAopProxy.java:202) > at com.sun.proxy.$Proxy417.purgeScanFromGrid(Unknown Source) > at com.company.core.core.async.tasks.PurgeTask.process( > PurgeTask.java:85) > at sun.reflect.GeneratedMethodAccessor197.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection > (AopUtils.java:302) > at > org.springframework.aop.framework.ReflectiveMethodInvocation. > invokeJoinpoint(ReflectiveMethodInvocation.java:190) > at > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:157) > at > org.springframework.transaction.interceptor.TransactionInterceptor$1. > proceedWithInvocation(TransactionInterceptor.java:99) > at > org.springframework.transaction.interceptor.TransactionAspectSupport. > invokeWithinTransaction(TransactionAspectSupport.java:281) > at > org.springframework.transaction.interceptor.TransactionInterceptor.invoke( > TransactionInterceptor.java:96) > at > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( > ReflectiveMethodInvocation.java:179) > at > org.springframework.aop.framework.JdkDynamicAopProxy. > invoke(JdkDynamicAopProxy.java:208) > at com.sun.proxy.$Proxy418.process(Unknown Source) > at > com.company.core.core.async.impl.ProgressMonitorImpl._ > runTasks(ProgressMonitorImpl.java:128) > at > com.company.core.core.async.impl.ProgressMonitorImpl.lambda$null$0( > ProgressMonitorImpl.java:98) > at java.util.concurrent.Executors$RunnableAdapter. > call(Executors.java:511) > at > com.google.common.util.concurrent.TrustedListenableFutureTa