【发布时间】:2021-08-01 21:03:20
【问题描述】:
我在两个 Kubernetes pod 中复制了两个 Infinispan 实例。在 Infinispan 中,我在两个实例上都有一个复制缓存 C。
当我在来自外部 Java 应用程序(注册到 C 缓存)的缓存 C 上使用 Infinispan Java API removeCache() 时,我看到只有 1/ 2 个 Infinispan pod 删除了该缓存,而另一个 pod 仍然包含它(然后,应用程序现在指向剩余的副本)。
有没有办法通过 Infinispan Java API 删除所有复制的缓存?或者,通过所有复制的缓存同步此 API 调用的方法?
【问题讨论】:
-
removeCache()方法从所有节点中删除缓存。你有任何例外吗?您如何检查缓存是否仍在运行? -
在 Infinispan pod 中有一个内置脚本可以查询缓存。因此,当我使用
removeCache()时,我输入了两个 pod 并使用该脚本,我看到其中只有一个没有缓存 C,而另一个仍然有它。看起来removeCache()仅在处理 Java 应用程序 API 请求的 pod 上工作。日志中未显示任何异常。我正在使用泊坞窗图像 jboss-infinispan-server:12.1.0 -
脚本其实是Infinispan的CLI(来自pod的是
bin/cli.sh)。 -
你能分享重现的步骤吗?你是如何启动 pod 的?
-
@Theta 如果您在服务器 XML 中定义缓存,
removeCache()不会删除所有服务器上的缓存。另见stackoverflow.com/questions/67469118/…
标签: caching distributed infinispan