Ignite 未能等待初始分区映射交换

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配置时,我没有收到警告。

将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配置时,我没有收到警告。工作正常。
使用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);