Hello Team,

I have a requirement to keep cache in ignite and that will update
frequently and selection also happens parallel,  while i am executing
queries iam getting,

ava.sql.SQLException: Failed to update some keys because they had been
modified concurrently [keys=[ROWKEY [idHash=628930863, hash=1637498765,
rowkey=6, id=765436]]]
        at
org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:1009)
        at
org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute0(JdbcThinStatement.java:234)
        at
org.apache.ignite.internal.jdbc.thin.JdbcThinPreparedStatement.executeWithArguments(JdbcThinPreparedStatement.java:252)
        at
org.apache.ignite.internal.jdbc.thin.JdbcThinPreparedStatement.executeUpdate(JdbcThinPreparedStatement.java:96)
        at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at
org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:118)
        at com.sun.proxy.$Proxy16.executeUpdate(Unknown Source)

Attached config file in attachment.

Thanks & Regards
Ajay Babu Maguluri.
<?xml  version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans";
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:aop="http://www.springframework.org/schema/aop";
	xmlns:context="http://www.springframework.org/schema/context";
	xmlns:jee="http://www.springframework.org/schema/jee"; xmlns:lang="http://www.springframework.org/schema/lang";
	xmlns:p="http://www.springframework.org/schema/p"; xmlns:tx="http://www.springframework.org/schema/tx";
	xmlns:util="http://www.springframework.org/schema/util"; xmlns:mvc="http://www.springframework.org/schema/mvc";
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
        http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd";>

	<!-- <context:component-scan base-package="com.sixdee.ignite"></context:component-scan>
	<context:annotation-config />
	<mvc:annotation-driven />
	 -->
	
			<bean class="org.apache.ignite.configuration.IgniteConfiguration"
				id="igniteConfiguration">
				
				<property name="cacheKeyConfiguration">
					<list>
						<bean class="org.apache.ignite.cache.CacheKeyConfiguration">
							<property name="typeName" value="ROWKEY" />
							<property name="affinityKeyFieldName" value="rowkey" />
						</bean>
					</list>
				</property>
		
				<property name="clientMode" value="false" />
				<property name="gridName" value="6d-ignite-grid"></property>
				<property name="cacheConfiguration">
					<list>
						<bean class="org.apache.ignite.configuration.CacheConfiguration">
							<property name="name" value="persons"></property>
							<!-- Set cache mode. -->
							<property name="cacheMode" value="PARTITIONED" />
							<!-- Set number of backups to 0 -->
							<property name="backups" value="0" />
							<property name="onheapCacheEnabled" value="false" />
							<property name="statisticsEnabled" value="true" />
							<property name="memoryPolicyName" value="Default_Region" />
							<property name="copyOnRead" value="false" />
							<property name="writeSynchronizationMode" value="FULL_SYNC" />
							<property name="affinity">
								<bean
									class="org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction">
									<property name="excludeNeighbors" value="true" />
									<property name="partitions" value="10" />
									<property name="affinityBackupFilter">
										<bean
											class="org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeAffinityBackupFilter">
											<constructor-arg>
												<array value-type="java.lang.String">
													<value>AVAILABILITY_ZONE</value>
												</array>
											</constructor-arg>
										</bean>
									</property>
								</bean>
							</property>

							<property name="queryEntities">
								<list>
									<bean class="org.apache.ignite.cache.QueryEntity">
										<property name="keyType" value="ROWKEY"></property>
										<property name="valueType" value="PERSONS"></property>
										<property name="fields">
											<map>
												<entry key="rowkey" value="java.lang.Long"></entry>
												<entry key="id" value="java.lang.Long"></entry>
												<entry key="name" value="java.lang.String"></entry>
												<entry key="birthday" value="java.lang.String"></entry>
												<entry key="gender" value="java.lang.String"></entry>
												<entry key="amount" value="java.lang.Long"></entry>
												<entry key="salary" value="java.lang.Long"></entry>
												<entry key="orgid" value="java.lang.String"></entry>
											</map>
										</property>
										<property name="keyFields">
											<set>
												<value>rowkey</value>
												<value>id</value>
											</set>
										</property>
									</bean>
								</list>
							</property>
						</bean>
					</list>
				</property>
				<property name="includeEventTypes">
					<list>
						<!--Task execution events -->
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_TASK_STARTED" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_TASK_FINISHED" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_TASK_FAILED" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_TASK_TIMEDOUT" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_TASK_SESSION_ATTR_SET" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_TASK_REDUCED" />

						<!--Cache events -->
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ" />
						<util:constant
							static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED" />
					</list>
				</property>
				<property name="peerClassLoadingEnabled" value="true"></property>

				<property name="discoverySpi">
					<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
						<property name="ipFinder">
							<bean
								class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
								<property name="addresses">
									<list>
										<!-- In distributed environment, replace with actual host IP address. -->
										<value>127.0.0.1:47500..47509</value>
										
									</list>
								</property>
							</bean>
						</property>
					</bean>
				</property>

				<property name="memoryConfiguration">
					<bean class="org.apache.ignite.configuration.MemoryConfiguration">
						<property name="defaultMemoryPolicyName" value="Default_Region" />
						<property name="pageSize" value="4096" />
						<property name="systemCacheInitialSize" value="#{40 * 1024 * 1024}" />
						<property name="systemCacheMaxSize" value="#{40 * 1024 * 1024}" />
						<property name="memoryPolicies">
							<list>
								<bean
									class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
									<property name="name" value="Default_Region" />
									<property name="initialSize" value="#{20 * 1024 * 1024}" />
									<property name="maxSize" value="#{20 * 1024 * 1024}" />
									<property name="pageEvictionMode" value="RANDOM_2_LRU" />
									<property name="evictionThreshold" value="0.6" />
									<property name="metricsEnabled" value="true" />
								</bean>
							</list>
						</property>
					</bean>
				</property>
			</bean>
		
	<!-- 
	
	<bean id="placeholderConfig"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:secret.properties" />
	</bean>

	 <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
		id="dataSource">
		<property name="driverClassName" value="${dsMySQL_DB.jdbc.driver}"></property>
		<property name="url" value="${dsMySQL_DB.jdbc.url}"></property>
		<property name="username" value="${dsMySQL_DB.jdbc.username}"></property>
		<property name="password" value="${dsMySQL_DB.jdbc.password}"></property>
	</bean> 
	
	  <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
	    <property name="jndiName" value="java:comp/env/jdbc/jndi"/>
	 </bean>
	 
	
 	
	Spring Quartz
	<bean name="refreshCache" class="org.springframework.scheduling.quartz.JobDetailBean">
		<property name="jobClass" value="com.sixdee.ignite.RefreshCache" />
		<property name="jobDataAsMap">
		    <map>
		    	<entry key="cacheName" value="persons" />
				<entry key="query" value="select * from person" />
		    	<entry key="igniteSpringBean" value-ref="igniteSpringBean" />
		    	<entry key="dataSource" value-ref="dataSource" />
			</map>
		</property>
	</bean>
 
	Cron Trigger, run every 5 seconds
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="refreshCache" />
		<property name="cronExpression" value="0/5 * * * * ?" />
	</bean>
 
	 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger" />
            </list>
        </property>
        <property name="quartzProperties">
			<props>
            	<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>
        	</props>
		</property>
    </bean> -->
	
	

</beans>

Reply via email to