Java 点火缓存错误

Java 点火缓存错误,java,spring,caching,ignite,Java,Spring,Caching,Ignite,我们使用ApacheIgnite进行缓存,在测试期间,我遇到了这个错误 java.lang.IllegalStateException:缓存已关闭或销毁 我们有一个内置IGNITE的Spring Restful客户端。调用来更新和从缓存中删除 发生的步骤如下所示 Ignite服务器的一个实例正在运行 在不同服务器上运行的Restful客户端的一个实例 点燃嵌入式 已终止Ignite服务器实例,客户端仍在运行 Ignite服务器已重新启动 客户端在缓存中放入值的任何尝试都会导致上述错误 例外 如果

我们使用ApacheIgnite进行缓存,在测试期间,我遇到了这个错误

java.lang.IllegalStateException:缓存已关闭或销毁

我们有一个内置IGNITE的Spring Restful客户端。调用来更新和从缓存中删除

发生的步骤如下所示

  • Ignite服务器的一个实例正在运行
  • 在不同服务器上运行的Restful客户端的一个实例 点燃嵌入式
  • 已终止Ignite服务器实例,客户端仍在运行
  • Ignite服务器已重新启动
  • 客户端在缓存中放入值的任何尝试都会导致上述错误 例外
  • 如果客户端重新启动,一切正常
  • 有人能提出一些见解来解释为什么会发生这种情况吗。我是否必须处理所有节点离开并手动退出缓存之类的事件


    任何帮助都会显示出来

    如果所有服务器都停机,客户端将使用新ID重新连接(就像手动重新启动它一样)。在这种情况下,所有现有缓存实例都将关闭,您必须获取新实例(使用
    Ignite.cache(…)
    method)


    有一种方法可以改进这种行为:

    如果所有服务器都停机,客户端将使用新ID重新加入(就像手动重新启动它一样)。在这种情况下,所有现有缓存实例都将关闭,您必须获取新实例(使用
    Ignite.cache(…)
    method)


    有一张票可以改善这种行为:

    我们也遇到了这个问题,我们有一个解决办法。我们实现了我们自己版本的SpringCacheManager(ReconnectSafeSpringCacheManager),它将缓存对象包装在重新连接安全缓存代理对象(ReconnectSafeCacheProxy)中

    当一个缓存代理捕获到
    IllegalStateException
    时,我们会告诉缓存管理器删除该缓存(将其从内部
    caches
    map中删除),然后调用
    ReconnectSafeSpringCacheManager.getCache()
    ,重新创建Ignite缓存实例。代理使用新的Ignite缓存替换其缓存引用,然后重试导致异常的操作


    我们的方法要求我们将缓存管理器代码放在
    org.apache.ignite.cache.spring
    包中,因为SpringCacheManager中有对非公共API:s的引用,这不是最干净的方法,但它似乎有效,我们计划在解决问题后取消变通办法。

    我们也遇到了这个问题,我们有变通办法。我们实现了我们自己版本的SpringCacheManager(ReconnectSafeSpringCacheManager),它将缓存对象包装在重新连接安全缓存代理对象(ReconnectSafeCacheProxy)中

    当一个缓存代理捕获到
    IllegalStateException
    时,我们会告诉缓存管理器删除该缓存(将其从内部
    caches
    map中删除),然后调用
    ReconnectSafeSpringCacheManager.getCache()
    ,重新创建Ignite缓存实例。代理使用新的Ignite缓存替换其缓存引用,然后重试导致异常的操作


    我们的方法要求我们将缓存管理器代码放在
    org.apache.ignite.cache.spring
    包中,因为SpringCacheManager中有对非公共API:s的引用,这不是最干净的方法,但它似乎可以工作,我们计划在解决问题后删除该解决方法。

    无法ignite.getOrCreateCache(cfg);help hereYha我正在尝试使用上述方法,但使用的缓存名称与服务器停机前使用的相同。我在客户端使用spring缓存。导致问题的是客户端的过时实例吗?。有没有办法在不重新启动客户端的情况下解决此问题?对于Spring缓存,除了重新启动客户端之外,没有其他解决方法。这将在下一个版本中修复:无法点燃.getOrCreateCache(cfg);help hereYha我正在尝试使用上述方法,但使用的缓存名称与服务器停机前使用的相同。我在客户端使用spring缓存。导致问题的是客户端的过时实例吗?。有没有办法在不重新启动客户端的情况下解决此问题?对于Spring缓存,除了重新启动客户端之外,没有其他解决方法。这将在下一版本中修复: