【发布时间】:2020-09-16 21:04:52
【问题描述】:
我正在尝试通过使用跨数据中心复制模式从 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�org.infinispan.server.hotrod.InvalidMagicIdException: Error reading magic byte or message id: 71¡�P�org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节或消息 ID 时出错:69�P�org.infinispan.server.hotrod.InvalidMagicIdException: Error reading magic byte or message id: 84¡�P�org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节时出错或消息 id:32…P�org.infinispan.server.hotrod.InvalidMagicIdException: Error reading magic byte or message id: 47¡�P�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:读取魔术字节或消息时出错编号: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.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498) 在 io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:437) 在 io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) 在 io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) 在 io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93) 在 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.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) 在 io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) 在 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) 在 io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) 在 io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) 在 io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) 在 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.run(ThreadExecutorMap.java:74) 在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 在 java.lang.Thread.run(Thread.java:748)
18:41:28,593 错误 [org.infinispan.server.hotrod.BaseRequestProcessor] (HotRod-ServerIO-4-1) ISPN005003:报告异常:org.infinispan.server.hotrod.InvalidMagicIdException:读取魔术字节或消息时出错编号: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.x.x 和 11.x.x)确实不是,我可以加载 Hotrod 控制台。没有任何问题(版本 10.x.x 和 11.x.x)。 我关注的用于将 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 hot-rod