Hi all,
I've been trying to create a cache in my application with Cassandra as the
persistent storage.
My current setup is:
- starting Ignite on the server with default configs.
- application connects to the ignite server as a client and attempts to load
the cache configuration and create the cache
- the cache configuration uses CassandraCacheStoreFactory.
I'm aware I cannot do this programmatically because DataSource is not
serializable (until 1.8) so have been trying to use xml files.
When my application starts it seems to create the cache (
[17:30:44,732][INFO][main][GridCacheProcessor] Started cache
[name=ctntimestamp, mode=PARTITIONED]) but later just gets stuck with
"[WARNING][main][GridCachePartitionExchangeManager] Still waiting for initial
partition map exchange" every 40 seconds. In the logs for the server I see the
error message
"class org.apache.ignite.IgniteCheckedException: Spring bean with provided name
doesn't exist , beanName=cassandraAdminDataSource]".
My xml file is below and is in the src/main/resources folder. It is loaded with
Ignition.start(getClass.getResource("/ignite-cass.xml"))
Any ideas what the problem could be?
P.S. When will 1.8 be released? I tried doing it all programmatically with 1.8
SNAPSHOT and it works fine.
<?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">
<bean id="loadBalancingPolicy"
class="com.datastax.driver.core.policies.TokenAwarePolicy">
<constructor-arg
type="com.datastax.driver.core.policies.LoadBalancingPolicy">
<bean class="com.datastax.driver.core.policies.RoundRobinPolicy"/>
</constructor-arg>
</bean>
<util:list id="contactPoints" value-type="java.lang.String">
<value>127.0.0.1</value>
</util:list>
<bean id="cassandraAdminDataSource"
class="org.apache.ignite.cache.store.cassandra.datasource.DataSource">
<property name="contactPoints" ref="contactPoints"/>
<property name="readConsistency" value="ONE"/>
<property name="writeConsistency" value="ONE"/>
<property name="loadBalancingPolicy" ref="loadBalancingPolicy"/>
</bean>
<bean id="cache1_persistence_settings"
class="org.apache.ignite.cache.store.cassandra.persistence.KeyValuePersistenceSettings">
<constructor-arg type="java.lang.String">
<value><![CDATA[
<persistence keyspace="test1" table="primitive_test1">
<keyPersistence class="java.lang.String" strategy="PRIMITIVE" column="key"/>
<valuePersistence class="java.lang.Long" strategy="PRIMITIVE"
column="value"/>
</persistence>]]>
</value>
</constructor-arg>
</bean>
<!-- Ignite configuration -->
<bean id="ignite.cfg"
class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="clientMode" value="true"/>
<property name="metricsLogFrequency" value="0"/>
<property name="cacheConfiguration">
<list>
<!-- Configuring persistence for "cache1" cache -->
<bean
class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="ctntimestamp"/>
<property name="readThrough" value="true"/>
<property name="writeThrough" value="true"/>
<property name="cacheStoreFactory">
<bean
class="org.apache.ignite.cache.store.cassandra.CassandraCacheStoreFactory">
<property name="dataSourceBean"
value="cassandraAdminDataSource"/>
<property name="persistenceSettingsBean"
value="cache1_persistence_settings"/>
</bean>
</property>
</bean>
</list>
</property>
<!-- Configuring remote ignite cluster connections -->
<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</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
</bean>
</beans>