"InvalidProtocolBufferException" error is thrown while loading a large stateful knowledge session in BRMS 5.3.x
Environment
- Red Hat JBoss Enterprise Business Rules Management System (BRMS) 5.3.1
Issue
When attempting to load a large stateful knowledge session, a InvalidProtocolBufferException
exception is thrown in JBoss BRMS 5.3.1 + Roll Up 5 applied:
13:17:07,927 ERROR [org.jboss.as.ejb3.invocation] (Camel (camel-4) thread #1 - JmsConsumer[queue.workflow-command]) JBAS014134: EJB Invocation failed on component CustomerOrderCommandHelper for method public org.drools.runtime.StatefulKnowledgeSession com.apd.phoenix.service.brms.impl.CustomerOrderCommandHelper.getStatefulKnowledgeSession(long) throws java.lang.Exception: javax.ejb.EJBTransactionRolledbackException: java.lang.reflect.InvocationTargetException
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:138) [jboss-as-ejb3.jar:7.2.1.Final-redhat-10]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:228) [jboss-as-ejb3.jar:7.2.1.Final-redhat-10]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:317) [jboss-as-ejb3.jar:7.2.1.Final-redhat-10]
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:214) [jboss-as-ejb3.jar:7.2.1.Final-redhat-10]
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation.jar:1.1.2.Final-redhat-1]
...
Caused by: java.lang.RuntimeException: Unable to load session snapshot
at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:96) [drools-persistence-jpa-5.3.1.BRMS.jar:5.3.1.BRMS]
at org.drools.persistence.SingleSessionCommandService.initKsession(SingleSessionCommandService.java:244) [drools-persistence-jpa-5.3.1.BRMS.jar:5.3.1.BRMS]
at org.drools.persistence.SingleSessionCommandService.<init>(SingleSessionCommandService.java:192) [drools-persistence-jpa-5.3.1.BRMS.jar:5.3.1.BRMS]
... 380 more
Caused by: 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(InvalidProtocolBufferException.java:110) [protobuf-java-2.5.0.jar:]
at com.google.protobuf.CodedInputStream.refillBuffer(CodedInputStream.java:755) [protobuf-java-2.5.0.jar:]
at com.google.protobuf.CodedInputStream.isAtEnd(CodedInputStream.java:701) [protobuf-java-2.5.0.jar:]
at com.google.protobuf.CodedInputStream.readTag(CodedInputStream.java:99) [protobuf-java-2.5.0.jar:]
at org.drools.marshalling.impl.ProtobufMessages$Header.<init>(ProtobufMessages.java:169) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.ProtobufMessages$Header.<init>(ProtobufMessages.java:133) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.ProtobufMessages$Header$1.parsePartialFrom(ProtobufMessages.java:253) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.ProtobufMessages$Header$1.parsePartialFrom(ProtobufMessages.java:248) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:200) [protobuf-java-2.5.0.jar:]
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:217) [protobuf-java-2.5.0.jar:]
at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49) [protobuf-java-2.5.0.jar:]
at org.drools.marshalling.impl.ProtobufMessages$Header.parseFrom(ProtobufMessages.java:1152) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.PersisterHelper.readFromStreamWithHeader(PersisterHelper.java:235) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.ProtobufInputMarshaller.loadAndParseSession(ProtobufInputMarshaller.java:224) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.ProtobufInputMarshaller.readSession(ProtobufInputMarshaller.java:155) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.marshalling.impl.ProtobufMarshaller.unmarshall(ProtobufMarshaller.java:117) [drools-core-5.3.1.BRMS-P05-temporary-patch.jar:]
at org.drools.persistence.SessionMarshallingHelper.loadSnapshot(SessionMarshallingHelper.java:91) [drools-persistence-jpa-5.3.1.BRMS.jar:5.3.1.BRMS]
... 382 more
Resolution
The issue is fixed by applying the One-Off Patch on top of Roll Up Patch 5.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments