Apache Ignite org.apache.ignite.internal.client.thin.ClientProtocolError“无效的响应大小”和“意外的响应ID”

时间:2020-08-20 16:30:55

标签: java ignite

我在同一服务器上有一个dockerized ignite实例和一个dockerized java程序。 Ignite具有由config xml定义的缓存,并且Java通过瘦客户端连接到它,并且该缓存由另一个服务填充。 Java只会触发获取键值。

一切都按预期进行,有时会出现此错误,并且重新创建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。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为您使用的端口错误。您应该使用10800ClientConnectorConfiguration指定的那个。

答案 1 :(得分:0)

尽管在瘦客户端文档中它表示支持多线程,但似乎无法承受负载。

我用普通客户解决了这个问题。

相关问题