Apache Ignite org.apache.ignite.internal.client.thin.ClientProtocolError "Invalid response size" 和 "Unexpected response ID"
Apache Ignite org.apache.ignite.internal.client.thin.ClientProtocolError "Invalid response size" and "Unexpected response ID"
我在同一台服务器上有一个 docker 化的 ignite 实例和一个 docker 化的 java 程序。 Ignite 有一个由配置 xml 定义的缓存,java 通过瘦客户端连接到它,缓存由另一个服务填充。 java 只做一个 get 点燃来获取键值。
一切都按预期工作,有时会出现此错误并重新创建 java docker 解决了它。今天 java 每次都开始显示此错误,在某些负载下 运行 几秒钟后出现,我无法解决。已尝试清空缓存或停止填充它的服务。
例外情况如下:
org.apache.ignite.internal.client.thin.ClientProtocolError: Unexpected response ID [4595132326738094176]
at org.apache.ignite.internal.client.thin.TcpClientChannel.processNextResponse(TcpClientChannel.java:284)
at org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:234)
at org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:171)
at org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:180)
at org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:242)
at org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:509)
at org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
at com.abc.rtpm.RtpmClient.getPrice(RtpmClient.java:63)
org.apache.ignite.internal.client.thin.ClientProtocolError: Invalid response size: -1476395008
at org.apache.ignite.internal.client.thin.TcpClientChannel.processNextResponse(TcpClientChannel.java:275)
at org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:234)
at org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:171)
at org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:180)
at org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:242)
at org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:509)
at org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
at com.abc.rtpm.RtpmClient.getPrice(RtpmClient.java:63)
客户端由以下代码创建:
this.cfg = new ClientConfiguration().setAddresses(clientHost + ":" + clientPort);
try {
this.igniteClient = Ignition.startClient(this.cfg);
this.cache = this.igniteClient.getOrCreateCache("rtpm");
}
catch (ClientException e) {
System.err.println(e.getMessage());
}
catch (Exception e){
System.err.format("Unexpected failure: %s\n", e);
}
有多个线程同时调用 get。
非常感谢任何帮助。
我认为您使用了错误的端口。您应该使用 10800
或 ClientConnectorConfiguration
.
指定的那个
虽然在瘦客户端文档中说它支持多线程,但它似乎无法承受负载。
我用普通客户端解决了这个问题。
我在同一台服务器上有一个 docker 化的 ignite 实例和一个 docker 化的 java 程序。 Ignite 有一个由配置 xml 定义的缓存,java 通过瘦客户端连接到它,缓存由另一个服务填充。 java 只做一个 get 点燃来获取键值。
一切都按预期工作,有时会出现此错误并重新创建 java docker 解决了它。今天 java 每次都开始显示此错误,在某些负载下 运行 几秒钟后出现,我无法解决。已尝试清空缓存或停止填充它的服务。
例外情况如下:
org.apache.ignite.internal.client.thin.ClientProtocolError: Unexpected response ID [4595132326738094176]
at org.apache.ignite.internal.client.thin.TcpClientChannel.processNextResponse(TcpClientChannel.java:284)
at org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:234)
at org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:171)
at org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:180)
at org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:242)
at org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:509)
at org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
at com.abc.rtpm.RtpmClient.getPrice(RtpmClient.java:63)
org.apache.ignite.internal.client.thin.ClientProtocolError: Invalid response size: -1476395008
at org.apache.ignite.internal.client.thin.TcpClientChannel.processNextResponse(TcpClientChannel.java:275)
at org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:234)
at org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:171)
at org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:180)
at org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:242)
at org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:509)
at org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
at com.abc.rtpm.RtpmClient.getPrice(RtpmClient.java:63)
客户端由以下代码创建:
this.cfg = new ClientConfiguration().setAddresses(clientHost + ":" + clientPort);
try {
this.igniteClient = Ignition.startClient(this.cfg);
this.cache = this.igniteClient.getOrCreateCache("rtpm");
}
catch (ClientException e) {
System.err.println(e.getMessage());
}
catch (Exception e){
System.err.format("Unexpected failure: %s\n", e);
}
有多个线程同时调用 get。
非常感谢任何帮助。
我认为您使用了错误的端口。您应该使用 10800
或 ClientConnectorConfiguration
.
虽然在瘦客户端文档中说它支持多线程,但它似乎无法承受负载。
我用普通客户端解决了这个问题。