Unable to serialize Trigger for type: class org.drools.core.time.impl.CompositeMaxDurationTrigger using BRMS 6.0

Solution Verified - Updated -

Issue

We are using BRMS 6.0.3 with the following rule:

rule "DUMMY_RULE"
    ruleflow-group "core"
    when
        $event: DummyEvent()
        not OtherDummyEvent(this after[0,96h] $event)
        not DummyEvent(this != $event, this after[0,96h] $event)
    then
        // Do something
end

When running a stateful KieSession in STREAM mode and when a DummyEvent is inserted into the working memory, it results in a then serialization failure. An instance of the org.drools.core.time.impl.CompositeMaxDurationTrigger class is created, but org.drools.core.marshalling.impl.ProtobufOutputMarshaller is not able to serialize this type of trigger. It fails with the following stacktrace:

Caused by: java.lang.RuntimeException: Unable to serialize Trigger for type: class org.drools.core.time.impl.CompositeMaxDurationTrigger
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeTrigger(ProtobufOutputMarshaller.java:936)
    at org.drools.core.phreak.PhreakTimerNode$TimerNodeTimerOutputMarshaller.serialize(PhreakTimerNode.java:568)
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeTimers(ProtobufOutputMarshaller.java:871)
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.serializeSession(ProtobufOutputMarshaller.java:213)
    at org.drools.core.marshalling.impl.ProtobufOutputMarshaller.writeSession(ProtobufOutputMarshaller.java:119)
    at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:166)
    at org.drools.core.marshalling.impl.ProtobufMarshaller.marshall(ProtobufMarshaller.java:148)

Environment

  • Red Hat JBoss BRMS
    • 6.0.2
    • 6.0.3

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In