问题标签 [infinispan-9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
infinispan-9 - ISPN000373:尝试使用配置模板“XXXX”和 Infinispan 9.2.5 启动缓存
在应用程序启动时,我尝试创建这样的缓存:
我用来创建缓存的代码如下:
这会导致以下异常:
我理解这个例外意味着我不能有一个与缓存模板同名的缓存。
我查看了org.infinispan.manager.DefaultCacheManager
(版本 9.2.5.Final)并找到了这个实现:
这定义了一个带有传入名称的配置。在这种情况下"XXXX"
,然后继续尝试创建一个具有完全相同名称的缓存。
在调用getCache(name)
it 时调用wireAndStartCache
which 检查配置是否与缓存名称相同。总是这样,因为前面的代码传递了完全相同的字符串。我不明白这种方法怎么可能奏效。
如何避免此错误并创建缓存?
caching - 分布式模式 Infinispan 的节点之间是否可能存在数据延迟?
使用 Infinispan v9,我的应用程序使用分布式异步缓存模式,其中集群范围的数据副本数为 3。
假设缓存条目 123的数据所有者/副本位于节点 A、B、C中。
有了这个,我有两个问题(假设它们不是由网络问题引起的)
- 如果节点 C查询条目 123,节点 C 是否会发现由于复制延迟而丢失的条目?
- 如果节点 D查询条目 123,节点 D 是否会发现由于某种滞后而丢失的条目?
infinispan - Infinispan v9.4.18 Hotrod 控制台异常 InvalidMagicIdException 报告
我正在尝试通过使用跨数据中心复制模式从 Keycloak 外部化 Infinispan 服务器来设置远程缓存。我在这里关注 Keycloak 官方文档 https://www.keycloak.org/docs/latest/server_installation/#crossdc-mode
根据文档,Keycloak 和 Infinispan 版本的使用如下(我希望这些版本相互兼容,因为此信息来自 Keycloak 的官方网站) -
Keycloak 版本 - 11.0.2 Infinispan 版本 - 9.4.18
令我惊讶的是,我在 Infinispan V9.4.18 中发现了一个错误。infinispan 服务器不断报告以下异常。
我从他们的官方网站https://downloads.jboss.org/infinispan/9.4.18.Final/infinispan-server-9.4.18.Final.zip下载了 Infinispan 服务器(版本 infinispan-server-9.4.18) 没有做任何更改为任何 infinispan 配置文件,当我启动 Infinispan 服务器时,它启动时没有任何问题,但是当我尝试在http://127.0.0.1:11222启动 Hotrod 控制台时 (11222 是 hotrod 侦听的端口在我的本地主机上),它不会加载。我得到如下所示的问题:
¡P�<code>org.infinispan.server.hotrod.InvalidMagicIdException: 读取魔术字节或消息 id 时出错:71�P�</code>org.infinispan.server.hotrod.InvalidMagicIdException: 读取魔术字节或消息时出错id: 69…P…<code>org.infinispan.server.hotrod.InvalidMagicIdException: 读取魔法字节或消息 id: 84…P…</code>org.infinispan.server.hotrod.InvalidMagicIdException: 读取魔法错误字节或消息 ID:32¡P�<code>org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节或消息 ID 时出错:47�P�</code>org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节或消息 id 时出错:32¡P`org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节时出错或
在服务器的控制台上,异常如下:
18:41:28,551 错误 [org.infinispan.server.hotrod.BaseRequestProcessor] (HotRod-ServerIO-4-1) ISPN005003:报告异常:org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节或消息 ID 时出错:71在 org.infinispan.server.hotrod.HotRodDecoder.switch0(HotRodDecoder.java:208) 在 org.infinispan.server.hotrod.HotRodDecoder.switch1_0(HotRodDecoder.java:153) 在 org.infinispan.server.hotrod.HotRodDecoder.decode (HotRodDecoder.java:143) 在 io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:437) 在 io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498)。 handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) at org .infinispan.server.core.transport.StatsChannelHandler.channelRead(StatsChannelHandler.java:26) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java :363) 在 io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) 在 io.netty.channel 的 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355)。AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel .nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java :650) 在 io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) 在 io.netty.util.concurrent。 SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) 在 io.netty.util.internal.ThreadExecutorMap$2。在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 在 java.lang.Thread.run(Thread.java:748) 运行(ThreadExecutorMap.java:74)
18:41:28,593 错误 [org.infinispan.server.hotrod.BaseRequestProcessor] (HotRod-ServerIO-4-1) ISPN005003:报告异常:org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节或消息 ID 时出错:69在 org.infinispan.server.hotrod.HotRodDecoder.switch0(HotRodDecoder.java:208) 在 org.infinispan.server.hotrod.HotRodDecoder.switch1_0(HotRodDecoder.java:153)
我尝试使用多个版本的 Infinispan 服务器(例如 9.4.18、9.4.20、10.0.1、11.0.3),但 Infinispan 版本 9.4.x 给了我问题,而 10.xx 和 11.xx)没有,我可以加载 Hotrod 控制台。没有任何问题(版本 10.xx 和 11.xx)。我关注的用于将 Keycloak 与外部远程 Infinispan 集成的 Keycloak 文档(https://www.keycloak.org/docs/latest/server_installation/#crossdc-mode)基于 Infinispan 版本 v9.4.18,它在架构上存在很大差异从版本 v10.0.1 或 v11.0.3 开始
我在这里看到了 Redhat 建议的一种解决方案https://access.redhat.com/solutions/3920921 围绕这个问题,这听起来像是 hotrod 客户端的协议版本问题(可能与 hotrod 服务器等不兼容)但在我的情况下我正在尝试通过浏览器加载 hotrod 服务器控制台。我本身没有任何 hotrod 客户端应用程序),因此该解决方案没有多大用处。
有没有人遇到过或对我面临的以下 infinispan 问题有任何想法/指针,以及如何克服这个问题?
在这里欣赏指针/建议。非常感谢贾米尔
infinispan - 错误/Infinispan 9.4.20.Final 到 10.1.8.Final 之间事务行为的变化
我们正在使用 Infinispan 控制在 Payara 服务器(Enterprise v 5.22.0)上运行的 JEE 应用程序中的分布式缓存(复制缓存),使用 Java 8(OpenJDK 64 位服务器 VM 供应商:Azul Systems, Inc. 版本:25.262 -b19)
为了在启动多个实例时控制应用程序的启动,我们创建了一个名为 Mutex 的 PESSIMISTIC 锁定缓存,用于“锁定”集群以允许 1 个实例加载缓存而其他实例等待。获取锁的第一个实例读取数据库并加载许多其他缓存,这些缓存都配置为 OPTIMISISTIC 锁定。这些缓存“放置”都发生在外部 Mutex 事务中。OPTMISTIC 缓存使用 state-transfer enabled=true 定义,因此当实例从数据库加载缓存完成并通过提交外部事务释放互斥锁时,缓存也会在所有实例上更新。
在加载 OPTIMISTIC 缓存时,我们有时会使用 CACHE1 中的条目来驱动 CACHE2 的加载(我们确实有更有意义的名称,但这里的细节并不重要)。因此,加载 CACHE1 后,我们使用 CACHE1.values() 将条目编排到 CACHE2.put() 中。
现在问题...
在 V9.4.20.Final(及以下),上述过程有效。在 V10.x(也是 V.11.0.5.Final)这不起作用。我们已经调试了我们的代码,发现在 V10.x 中,写入 CACHE1 的条目(所有缓存都是隔离 =“READ_COMMITTED”)在尝试加载 CACHE2 时使用 CACHE1.values() 是不可见的。只是为了确认相同的代码在 V9 中有效,其中 CACHE1.values() 确实按预期返回值,因为它在同一事务中并且应该能够看到条目。
如果在 V10 中我们没有外部 Mutex 事务或在尝试读取 CACHE1 之前提交外部 Mutex 事务,那么一切正常。
问题:
事务性是否已更改以删除嵌套事务中写入的条目对写入它们的进程的可见性?
我尝试过 Weblogic 12.2.13,怀疑容器事务管理器的行为可能有所不同,但没有。它在 V10 上失败,在 Weblogic 上与 V9 一起工作。
我可以在 zip(eclipse / gradle 项目)中提供完整的代码复制器,但这里是代码片段:
CacheServiceImpl 有一个方法 exclusivePutAndGetAll 和名称为 LOCK_KEY 的锁,可以用布尔值调用它来控制是在“互斥”父事务提交之前还是之后读取条目:
这是 mutexManager 的 startTransactionAndAcquireMutex,它开始事务并使用提供的“LOCK_KEY”锁定名为 Mutex 的缓存
这是获取锁的 mutexManager:
最后是 XML 中的缓存配置
jboss - 站点 1 无法连接到站点 2?错误:没有到站点 2 的路由:丢弃消息
我目前有一个 infinispan v.9.4.8 图像,其中包含两个站点的修改 clustered.xml 代码。我正在通过 docker 为 2 台服务器构建图像。在服务器 1(即主机名 1)上我有 site1,在服务器 2 上我有 site2。
即server1中的相关clustered.xml代码:
和 server2 中的相关 clustered.xml 代码:
然后我同时运行它们,用户界面似乎工作正常,直到我尝试点击“管理备份站点”->“推送状态”,我得到错误:
no route to site2: dropping message.
为什么它不能推动国家?我基于在线演示的配置(https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.4/html/server_installation_and_configuration_guide/operating-mode#setup供参考)