ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Gura <ag...@apache.org>
Subject Re: Persistent data store error
Date Tue, 23 May 2017 18:45:34 GMT
Hi,

Make sure that you have cache store configuration on server and client nodes.

Also use only one type of node configuration: declarative (Spring XML)
or programmatically configuration.

What version of Ignite do you use? I need it for applying provided
stack trace to proper version of code.


On Tue, May 23, 2017 at 2:16 PM, debasish pradhan <debasis0705@gmail.com> wrote:
> hi ,
>
>
> Please find the config file for client .
>
> import com.mchange.v2.c3p0.ComboPooledDataSource;
> import java.io.InputStream;
> import java.math.BigDecimal;
> import java.sql.Types;
> import java.util.ArrayList;
> import java.util.Arrays;
> import java.util.LinkedHashMap;
> import java.util.Properties;
> import javax.cache.configuration.Factory;
> import javax.sql.DataSource;
> import org.apache.ignite.cache.CacheAtomicityMode;
> import org.apache.ignite.cache.CacheMode;
> import org.apache.ignite.cache.QueryEntity;
> import org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory;
> import org.apache.ignite.cache.store.jdbc.JdbcType;
> import org.apache.ignite.cache.store.jdbc.JdbcTypeField;
> import org.apache.ignite.cache.store.jdbc.dialect.BasicJdbcDialect;
> import org.apache.ignite.configuration.BinaryConfiguration;
> import org.apache.ignite.configuration.CacheConfiguration;
> import org.apache.ignite.configuration.IgniteConfiguration;
> import org.apache.ignite.configuration.OdbcConfiguration;
> import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
> import
> org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
> //import com.timesten.jdbc.JdbcOdbcConnection;
> //import com.timesten.jdbc.TimesTenDataSource;
>
> public class ClientConfigurationFactory {
>     /** Secret properties loading. **/
>     private static final Properties props = new Properties();
>
>     static {
>         try (InputStream in =
> IgniteConfiguration.class.getClassLoader().getResourceAsStream("secret.properties"))
> {
>             props.load(in);
>         }
>         catch (Exception ignored) {
>             // No-op.
>         }
>     }
>
>     /** Helper class for datasource creation. **/
>     public static class DataSources {
>         public static final ComboPooledDataSource INSTANCE_dataStore =
> createdataStore();
>
>         private static ComboPooledDataSource createdataStore() {
>             ComboPooledDataSource dataStore = new ComboPooledDataSource();
>
>
> dataStore.setJdbcUrl("jdbc:timesten:client:TTC_Server=localhost;TCP_PORT=53397;TTC_Server_DSN=EMSDSN;UID=test;PWD=test;TTC_Timeout=180");
>             dataStore.setUser("kodiak");
>             dataStore.setPassword("kodiak");
>
>             return dataStore;
>         }
>     }
>
>
>     /**
>      * Configure grid.
>      *
>      * @return Ignite configuration.
>      * @throws Exception If failed to construct Ignite configuration
> instance.
>      **/
>     public static IgniteConfiguration createConfiguration() throws Exception
> {
>         IgniteConfiguration cfg = new IgniteConfiguration();
>
>         cfg.setClientMode(true);
>         cfg.setGridName("TestDB1");
>
>         TcpDiscoverySpi discovery = new TcpDiscoverySpi();
>
>         TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
>
>         ipFinder.setAddresses(Arrays.asList("127.0.0.1:47500..47510"));
>
>         discovery.setIpFinder(ipFinder);
>
>         cfg.setDiscoverySpi(discovery);
>
>         BinaryConfiguration binaryCfg = new BinaryConfiguration();
>
>         binaryCfg.setCompactFooter(false);
>
>         cfg.setBinaryConfiguration(binaryCfg);
>
>         cfg.setOdbcConfiguration(new OdbcConfiguration());
>
>         cfg.setCacheConfiguration(cacheEmployeeCache());
>
>         return cfg;
>     }
>
>     /**
>      * Create configuration for cache "EmployeeCache".
>      *
>      * @return Configured cache.
>      * @throws Exception if failed to create cache configuration.
>      **/
>     public static CacheConfiguration cacheEmployeeCache() throws Exception {
>         CacheConfiguration ccfg = new CacheConfiguration();
>
>         ccfg.setName("EmployeeCache");
>         ccfg.setCacheMode(CacheMode.PARTITIONED);
>         ccfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
>
>         CacheJdbcPojoStoreFactory cacheStoreFactory = new
> CacheJdbcPojoStoreFactory();
>
>         cacheStoreFactory.setDataSourceFactory(new Factory<DataSource>() {
>             /** {@inheritDoc} **/
>             @Override public DataSource create() {
>                 return DataSources.INSTANCE_dataStore;
>             };
>         });
>
>         cacheStoreFactory.setDialect(new BasicJdbcDialect());
>
>         cacheStoreFactory.setTypes(jdbcTypeEmployee(ccfg.getName()));
>
>         ccfg.setCacheStoreFactory(cacheStoreFactory);
>
>         ccfg.setReadThrough(true);
>         ccfg.setWriteThrough(true);
>
>         ArrayList<QueryEntity> qryEntities = new ArrayList<>();
>
>         QueryEntity qryEntity = new QueryEntity();
>
>         qryEntity.setKeyType("com.gmail.orl.debasis.model.EmployeeKey");
>         qryEntity.setValueType("com.gmail.orl.debasis.model.Employee");
>
>         LinkedHashMap<String, String> fields = new LinkedHashMap<>();
>
>         fields.put("id", "java.math.BigDecimal");
>         fields.put("firstname", "java.lang.String");
>         fields.put("lastname", "java.lang.String");
>
>         qryEntity.setFields(fields);
>         qryEntities.add(qryEntity);
>
>         ccfg.setQueryEntities(qryEntities);
>
>         return ccfg;
>     }
>
>     /**
>      * Create JDBC type for "jdbcTypeEmployee".
>      *
>      * @param cacheName Cache name.
>      * @return Configured JDBC type.
>      **/
>     private static JdbcType jdbcTypeEmployee(String cacheName) {
>         JdbcType type = new JdbcType();
>
>         type.setCacheName(cacheName);
>         type.setKeyType("com.gmail.orl.debasis.model.EmployeeKey");
>         type.setValueType("com.gmail.orl.debasis.model.Employee");
>         type.setDatabaseSchema("DG");
>         type.setDatabaseTable("EMPLOYEE");
>
>         type.setValueFields(
>             new JdbcTypeField(Types.DECIMAL, "ID", BigDecimal.class, "id"),
>             new JdbcTypeField(Types.VARCHAR, "FIRSTNAME", String.class,
> "firstname"),
>             new JdbcTypeField(Types.VARCHAR, "LASTNAME", String.class,
> "lastname")
>         );
>
>         return type;
>     }
> }
>
> ******************
> client-config.xml
>
> <?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:util="http://www.springframework.org/schema/util"
>        xsi:schemaLocation="http://www.springframework.org/schema/beans
>
> http://www.springframework.org/schema/beans/spring-beans.xsd
>                            http://www.springframework.org/schema/util
>
> http://www.springframework.org/schema/util/spring-util.xsd">
>     <!-- Load external properties file. -->
>     <bean id="placeholderConfig"
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
>         <property name="location" value="classpath:secret.properties"/>
>     </bean>
>
>     <!-- Data source beans will be initialized from external properties
> file. -->
>      <bean id="dataStore" class="com.mchange.v2.c3p0.ComboPooledDataSource">
>         <property name="jdbcUrl" value="${dataStore.jdbc.url}"/>
>         <property name="user" value="${dataStore.jdbc.username}"/>
>         <property name="password" value="${dataStore.jdbc.password}"/>
>     </bean>
>
>     <!-- Data source beans will be initialized from external properties
> file. -->
>   <!-- <bean id="dataStore" class="com.timesten.jdbc.TimesTenDataSource">
>         <property name="jdbcUrl"
> value="jdbc:timesten:client:TTC_Server=localhost;TCP_PORT=53397;TTC_Server_DSN=emsdsn;UID=kodiak;PWD=kodiak;TTC_Timeout=180"/>
>         <property name="user" value="kodiak"/>
>         <property name="password" value="kodiak"/>
>     </bean>-->
>
>     <bean class="org.apache.ignite.configuration.IgniteConfiguration">
>         <property name="clientMode" value="false"/>
>         <property name="gridName" value="TestDB1"/>
>
>         <property name="discoverySpi">
>             <bean
> class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
>                 <property name="ipFinder">
>                     <bean
> class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
>                         <property name="addresses">
>                             <list>
>                                 <value>127.0.0.1:47500..47510</value>
>                             </list>
>                         </property>
>                     </bean>
>                 </property>
>             </bean>
>         </property>
>
>         <property name="binaryConfiguration">
>             <bean
> class="org.apache.ignite.configuration.BinaryConfiguration">
>                 <property name="compactFooter" value="false"/>
>             </bean>
>         </property>
>
>         <property name="odbcConfiguration">
>             <bean class="org.apache.ignite.configuration.OdbcConfiguration">
>             </bean>
>         </property>
>
>         <property name="cacheConfiguration">
>             <list>
>                 <bean
> class="org.apache.ignite.configuration.CacheConfiguration">
>                     <property name="name" value="EmployeeCache"/>
>                     <property name="cacheMode" value="PARTITIONED"/>
>                     <property name="atomicityMode" value="ATOMIC"/>
>
>                     <property name="cacheStoreFactory">
>                         <bean
> class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">
>                             <property name="dataSourceBean"
> value="dataStore"/>
>                             <property name="dialect">
>                                 <bean
> class="org.apache.ignite.cache.store.jdbc.dialect.BasicJdbcDialect">
>                                 </bean>
>                             </property>
>
>                             <property name="types">
>                                 <list>
>                                     <bean
> class="org.apache.ignite.cache.store.jdbc.JdbcType">
>                                         <property name="cacheName"
> value="EmployeeCache"/>
>                                         <property name="keyType"
> value="com.gmail.orl.debasis.model.EmployeeKey"/>
>                                         <property name="valueType"
> value="com.gmail.orl.debasis.model.Employee"/>
>                                         <property name="databaseSchema"
> value="DG"/>
>                                         <property name="databaseTable"
> value="EMPLOYEE"/>
>
>                                         <property name="valueFields">
>                                             <list>
>                                                 <bean
> class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
>                                                     <constructor-arg>
>                                                         <util:constant
> static-field="java.sql.Types.DECIMAL"/>
>                                                     </constructor-arg>
>                                                     <constructor-arg
> value="ID"/>
>                                                     <constructor-arg
> value="java.math.BigDecimal"/>
>                                                     <constructor-arg
> value="id"/>
>                                                 </bean>
>
>                                                 <bean
> class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
>                                                     <constructor-arg>
>                                                         <util:constant
> static-field="java.sql.Types.VARCHAR"/>
>                                                     </constructor-arg>
>                                                     <constructor-arg
> value="FIRSTNAME"/>
>                                                     <constructor-arg
> value="java.lang.String"/>
>                                                     <constructor-arg
> value="firstname"/>
>                                                 </bean>
>
>                                                 <bean
> class="org.apache.ignite.cache.store.jdbc.JdbcTypeField">
>                                                     <constructor-arg>
>                                                         <util:constant
> static-field="java.sql.Types.VARCHAR"/>
>                                                     </constructor-arg>
>                                                     <constructor-arg
> value="LASTNAME"/>
>                                                     <constructor-arg
> value="java.lang.String"/>
>                                                     <constructor-arg
> value="lastname"/>
>                                                 </bean>
>                                             </list>
>                                         </property>
>                                     </bean>
>                                 </list>
>                             </property>
>                         </bean>
>                     </property>
>
>                     <property name="readThrough" value="true"/>
>                     <property name="writeThrough" value="true"/>
>
>                     <property name="queryEntities">
>                         <list>
>                             <bean
> class="org.apache.ignite.cache.QueryEntity">
>                                 <property name="keyType"
> value="com.gmail.orl.debasis.model.EmployeeKey"/>
>                                 <property name="valueType"
> value="com.gmail.orl.debasis.model.Employee"/>
>
>                                 <property name="fields">
>                                     <map>
>                                         <entry key="id"
> value="java.math.BigDecimal"/>
>                                         <entry key="firstname"
> value="java.lang.String"/>
>                                         <entry key="lastname"
> value="java.lang.String"/>
>                                     </map>
>                                 </property>
>                             </bean>
>                         </list>
>                     </property>
>                 </bean>
>             </list>
>         </property>
>     </bean>
> </beans>
>
> On Tue, May 23, 2017 at 4:34 PM, Evgenii Zhuravlev
> <e.zhuravlev.wk@gmail.com> wrote:
>>
>> Hi,
>>
>> Could you provide your full config file?
>>
>> 2017-05-22 15:00 GMT+03:00 debasish pradhan <debasis0705@gmail.com>:
>>>
>>> Hi ,
>>>
>>> I am new to apache ignite. I was trying to connect Timesten DB to fetch
>>> data , but its failing . I downloaded the project from web console . As per
>>> instruction I started the server node . After that I am trying to run
>>> loadcache . but its failing with following error.
>>>
>>> cache load code:
>>> =========
>>>
>>> try (Ignite ignite = Ignition.start("TestDB1-client.xml")) {
>>>
>>> System.out.println(">>> Loading caches...");
>>>
>>> System.out.println(">>> Loading cache:...EmployeeCache");
>>>
>>> //ignite.cache("EmployeeCache").loadCache(null);
>>>
>>> ignite.cache("EmployeeCache").loadCache(null, Employee.class.getName(),
>>> "select * from DG.Employee");
>>>
>>>
>>> configuration:jdbc driver :
>>>
>>>     public static class DataSources {
>>>         public static final TimesTenDataSource INSTANCE_dataStore =
>>> createdataStore();
>>>         private static TimesTenDataSource createdataStore() {
>>>          TimesTenDataSource dataStore = new TimesTenDataSource();
>>>
>>> dataStore.setUrl("jdbc:timesten:client:TTC_Server=localhost;TCP_PORT=53397;TTC_Server_DSN=TESTDSN;UID=test;PWD=test;TTC_Timeout=180");
>>>             dataStore.setUser("test");
>>>             dataStore.setPassword("test");
>>>             return dataStore;
>>>         }
>>>     }
>>>
>>>
>>> TestDB1-client.xml-->
>>>
>>> <bean id="dataSource" class="com.timesten.jdbc.TimesTenDataSource">
>>> <property name="url"
>>> value="jdbc:timesten:client:TTC_Server=localhost;TCP_PORT=53397;TTC_Server_DSN=TestDSN;UID=test;PWD=test;TTC_Timeout=180"
>>> />
>>> <property name="username" value="kodiak" />
>>> <property name="password" value="kodiak" />
>>> </bean>
>>>
>>>
>>> [17:04:12,860][SEVERE][main][GridJobWorker] Failed to execute job
>>> [jobId=1a08fef2c51-8b249f71-34cd-4ec7-8056-c32a3e61034b,
>>> ses=GridJobSessionImpl [ses=GridTaskSessionImpl
>>> [taskName=o.a.i.i.processors.cache.GridCacheAdapter$LoadCacheJobV2,
>>> dep=LocalDeployment [super=GridDeployment [ts=1495452846874, depMode=SHARED,
>>> clsLdr=sun.misc.Launcher$AppClassLoader@4e0e2f2a,
>>> clsLdrId=6608fef2c51-8b249f71-34cd-4ec7-8056-c32a3e61034b, userVer=0,
>>> loc=true, sampleClsName=java.lang.String, pendingUndeploy=false,
>>> undeployed=false, usage=0]],
>>> taskClsName=o.a.i.i.processors.cache.GridCacheAdapter$LoadCacheJobV2,
>>> sesId=0a08fef2c51-8b249f71-34cd-4ec7-8056-c32a3e61034b,
>>> startTime=1495452852829, endTime=9223372036854775807,
>>> taskNodeId=8b249f71-34cd-4ec7-8056-c32a3e61034b,
>>> clsLdr=sun.misc.Launcher$AppClassLoader@4e0e2f2a, closed=false, cpSpi=null,
>>> failSpi=null, loadSpi=null, usage=1, fullSup=false, internal=true,
>>> subjId=8b249f71-34cd-4ec7-8056-c32a3e61034b, mapFut=IgniteFuture
>>> [orig=GridFutureAdapter [resFlag=0, res=null, startTime=1495452852839,
>>> endTime=0, ignoreInterrupts=false, state=INIT]]],
>>> jobId=1a08fef2c51-8b249f71-34cd-4ec7-8056-c32a3e61034b]]
>>>
>>> class org.apache.ignite.IgniteException: java.lang.NullPointerException
>>>
>>> at
>>> org.apache.ignite.internal.processors.closure.GridClosureProcessor$C2V2.execute(GridClosureProcessor.java:2059)
>>>
>>> at
>>> org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:560)
>>>
>>> at
>>> org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6620)
>>>
>>> at
>>> org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:554)
>>>
>>> at
>>> org.apache.ignite.internal.processors.job.GridJobWorker.body(GridJobWorker.java:483)
>>>
>>> at
>>> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>>>
>>> at
>>> org.apache.ignite.internal.processors.job.GridJobProcessor.processJobExecuteRequest(GridJobProcessor.java:1114)
>>>
>>> at
>>> org.apache.ignite.internal.processors.task.GridTaskWorker.sendRequest(GridTaskWorker.java:1383)
>>>
>>> at
>>> org.apache.ignite.internal.processors.task.GridTaskWorker.processMappedJobs(GridTaskWorker.java:645)
>>>
>>> at
>>> org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:537)
>>>
>>> at
>>> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>>>
>>> at
>>> org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:679)
>>>
>>> at
>>> org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:403)
>>>
>>> at
>>> org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:418)
>>>
>>> at
>>> org.apache.ignite.internal.processors.closure.GridClosureProcessor.callAsync(GridClosureProcessor.java:391)
>>>
>>> at
>>> org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCacheAsync(GridCacheAdapter.java:3718)
>>>
>>> at
>>> org.apache.ignite.internal.processors.cache.GridCacheAdapter.globalLoadCache(GridCacheAdapter.java:3657)
>>>
>>> at
>>> org.apache.ignite.internal.processors.cache.IgniteCacheProxy.loadCache(IgniteCacheProxy.java:390)
>>>
>>> at load.LoadCaches.main(LoadCaches.java:28)
>>>
>>>
>>>
>>
>

Mime
View raw message