[rules-users] Unmarshall large session fails

Magnus Vojbacke magnus.vojbacke at digitalroute.com
Thu Jan 24 07:06:21 EST 2013


I'm trying to unmarshal a knowledge session that has been persisted to file, but I get the following exception:

Stack Trace:
com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large. May be malicious. Use CodedInputStream.setSizeLimit() to increase the size limit.
    at com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded:89
    at com.google.protobuf.CodedInputStream.refillBuffer:720
    at com.google.protobuf.CodedInputStream.isAtEnd:666
    at com.google.protobuf.CodedInputStream.readTag:99
    at org.drools.marshalling.impl.ProtobufMessages$Header$Builder.mergeFrom:967
    at org.drools.marshalling.impl.ProtobufMessages$Header$Builder.mergeFrom:773
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom:212
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom:746
    at org.drools.marshalling.impl.ProtobufMessages$Header.parseFrom:724
    at org.drools.marshalling.impl.PersisterHelper.readFromStreamWithHeader:234
    at org.drools.marshalling.impl.ProtobufInputMarshaller.loadAndParseSession:217
    at org.drools.marshalling.impl.ProtobufInputMarshaller.readSession:107
    at org.drools.marshalling.impl.ProtobufMarshaller.unmarshall:143


The session consists of >1M facts, and the file is ~167 MB in size.

While Googling, I stumbled upon the recommendation to run CodedInputStream.resetSizeCounter() inbetween deserializing messages. Is this a fix that could be implemented in Drools?

Is there any way of configuring or parameterizing the unmarshalling size limit used by Drools?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20130124/cdb95161/attachment.html 


More information about the rules-users mailing list