Ignite 未能等待初始分区映射交换
将ApacheIgnite2.0更改为2.1后,我得到了以下警告Ignite 未能等待初始分区映射交换,ignite,Ignite,将ApacheIgnite2.0更改为2.1后,我得到了以下警告 2017-08-17 10:44:21.699 WARN 10884 --- [ main] .i.p.c.GridCachePartitionExchangeManager : Failed to wait for initial partition map exchange. Possible reasons are: 我使用第三方持久性缓存存储。 当我删除cacheStore配置时,我没有收到警告。
2017-08-17 10:44:21.699 WARN 10884 --- [ main] .i.p.c.GridCachePartitionExchangeManager : Failed to wait for initial partition map exchange. Possible reasons are:
我使用第三方持久性缓存存储。当我删除cacheStore配置时,我没有收到警告。工作正常。
使用cacheStore并将版本2.1改为2.0,我没有收到警告。干得好 2.1中是否有重大变化 这是我的完整框架堆栈。
-弹簧靴1.5.6
-春季数据jpa
-ApacheIgnite2.1.0 这是我在java代码中的完整配置。(我在spring中使用嵌入式ignite)
我使用分区缓存,使用SpringDataJPA将缓存写入rdbms存储
IgniteConfiguration igniteConfig = new IgniteConfiguration();
CacheConfiguration<Long, Object> cacheConfig = new CacheConfiguration<>();
cacheConfig.setCopyOnRead(false); //for better performance
cacheConfig
.setWriteThrough(true)
.setWriteBehindEnabled(true)
.setWriteBehindBatchSize(1024)
.setWriteBehindFlushFrequency(10000)
.setWriteBehindCoalescing(true)
.setCacheStoreFactory(new CacheStoreImpl()); //CacheStoreImpl use spring data jpa internally
cacheConfig.setName('myService');
cacheConfig.setCacheMode(CacheMode.PARTITIONED);
cacheConfig.setBackups(2);
cacheConfig.setWriteSynchronizationMode(FULL_ASYNC);
cacheConfig.setNearConfiguration(new NearCacheConfiguration<>());//use default configuration
igniteConfig.setCacheConfiguration(cacheConfig);
igniteConfig.setMemoryConfiguration(new MemoryConfiguration()
.setPageSize(8 * 1024)
.setMemoryPolicies(new MemoryPolicyConfiguration()
.setInitialSize((long) 256L * 1024L * 1024L)
.setMaxSize((long) 1024L * 1024L * 1024L)));
Ignite ignite = IgniteSpring.start(igniteConfig, springApplicationCtx);
ignite.active(true);
我调试我的代码,我想IgniteSpring无法注入SpringResource
@SpringResource(resourceClass = RdbmsCachePersistenceRepository.class)
private RdbmsCachePersistenceRepository repository;
@SpringResource(resourceClass = RdbmsCachePersistenceRepository.class)
private CacheObjectFactory cacheObjectFactory;
存储库中,cacheObjectFactory是与下面代码相同的实例
public interface RdbmsCachePersistenceRepository extends
JpaRepository<RdbmsCachePersistence, Long>,
CachePersistenceRepository<RdbmsCachePersistence>,
CacheObjectFactory {
@Override
default CachePersistence createCacheObject(long key, Object value, int partition) {
return new RdbmsCachePersistence(key, value, partition);
}
}
公共接口RdbmsCachePersistenceRepository扩展
JpaRepository,
CachePersistenceRepository,
缓存对象工厂{
@凌驾
默认CachePersistence createCacheObject(长键、对象值、int分区){
返回新的RdbmsCachePersistence(键、值、分区);
}
}
以及由spring data jpa实现的RdbmsCachePersistenceRepository当我逐行调试代码时,IgniteContext无法带来RdbmsCachePersistenceRepository
我不知道为什么我解决了这个问题,但我不知道为什么解决了 我在IgniteSpring.start之前添加了这个伪代码
springApplicationCtx.getBean(RdbmsCachePersistenceRepository.class);
我认为当ignite上下文获取bean时,spring资源bean没有初始化。请使用
-diagnite\u QUIET=false
系统属性集共享完整日志。顺便说一句,设置cacheConfig.setCopyOnRead(false)
仅在只读情况下是安全的。@alexfedotov我附加了它。您将@SpringResource注入到哪里?您是否尝试过@Bean public-IgniteSpringBean-IgniteSpringBean(){IgniteSpringBean=new-IgniteSpringBean();Bean.setConfiguration(igniteConfiguration());return-Bean;}
@alexfedotov-Thanx,我会尝试
springApplicationCtx.getBean(RdbmsCachePersistenceRepository.class);