9 Replies Latest reply on Apr 2, 2018 2:26 PM by fightgnome

    HotRodClientException:: ISPN004034 InvalidProtocolBufferException: Protocol message was too large.

    fightgnome

      Hey,

       

      Currently I'm implementing a remote cache with protobuf. While getting an object from the cache, the client is throwing this exception:

       

      at org.infinispan.client.hotrod.marshall.MarshallerUtil.bytes2obj(MarshallerUtil.java:49)

          at org.infinispan.client.hotrod.impl.protocol.CodecUtils.readUnmarshallByteArray(CodecUtils.java:38)

          at org.infinispan.client.hotrod.impl.protocol.Codec20.readUnmarshallByteArray(Codec20.java:54)

          at org.infinispan.client.hotrod.impl.operations.GetOperation.executeOperation(GetOperation.java:36)

          at org.infinispan.client.hotrod.impl.operations.RetryOnFailureOperation.execute(RetryOnFailureOperation.java:56)

          at org.infinispan.client.hotrod.impl.RemoteCacheImpl.get(RemoteCacheImpl.java:367)

          at com.channelpilot.api.tabledata.RemoteCacheConnector.get(RemoteCacheConnector.java:49)

          at com.channelpilot.api.tabledata.TableDataService.get(TableDataService.java:91)

          at com.channelpilot.api.tabledata.build.ControlDataBuilder.build(ControlDataBuilder.java:48)

          at com.channelpilot.api.frontend.jobs.threads.BuildTableDataJob.execute(BuildTableDataJob.java:72)

          at com.channelpilot.api.frontend.jobs.threads.BuildTableDataJob.execute(BuildTableDataJob.java:31)

          at com.channelpilot.utils.concurrent.CPCallable.call(CPCallable.java:105)

          at java.util.concurrent.FutureTask.run(FutureTask.java:266)

          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

          at java.lang.Thread.run(Thread.java:745)

      Caused by: protostream.com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large.  May be malicious.  Use CodedInputStream.setSizeLimit() to increase the size limit.

          at protostream.com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded(InvalidProtocolBufferException.java:122)

          at protostream.com.google.protobuf.CodedInputStream.readRawBytesSlowPath(CodedInputStream.java:1166)

          at protostream.com.google.protobuf.CodedInputStream.readByteArray(CodedInputStream.java:535)

          at org.infinispan.protostream.impl.RawProtoStreamReaderImpl.readByteArray(RawProtoStreamReaderImpl.java:105)

          at org.infinispan.protostream.WrappedMessage.readMessage(WrappedMessage.java:232)

          at org.infinispan.protostream.ProtobufUtil.fromWrappedByteArray(ProtobufUtil.java:122)

          at org.infinispan.query.remote.client.BaseProtoStreamMarshaller.objectFromByteBuffer(BaseProtoStreamMarshaller.java:32)

          at org.infinispan.commons.marshall.AbstractMarshaller.objectFromByteBuffer(AbstractMarshaller.java:82)

          at org.infinispan.client.hotrod.marshall.MarshallerUtil.bytes2obj(MarshallerUtil.java:33)

       

       

      Writing the object into the cache works just fine. But it cannot be retrieved again.

       

      Does anybody has any idea what I could do to solve this problem? I couldn't find a way to increase the size limit, although the object it self does not reach the limit of 64 MB.