Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-4996

NotSerializableException is thrown at the serialization of KieBase

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Minor Minor
    • None
    • 7.25.0.Final
    • core engine
    • None
    • 2020 Week 10-12 (from Mar 2)
    • NEW
    • NEW

      NotSerializableException is thrown at the serialization of KieBase when the 'when' part of a rule contains a query call.

      InterceptorMap static subclass doesn't implement the Serializable interface.
      When I corrected the source of MVELCompilationUnit and rebuild the drools-core.jar, the issue disappeared.

      Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.drools.core.base.mvel.MVELCompilationUnit$InterceptorMap
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1576)
      at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2210)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2286)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2210)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.rule.QueryArgument$Expression.readExternal(QueryArgument.java:145)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1974)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1566)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.rule.QueryElement.readExternal(QueryElement.java:75)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at java.util.ArrayList.readObject(ArrayList.java:797)
      at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1170)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2177)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.rule.GroupElement.readExternal(GroupElement.java:64)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.definitions.rule.impl.RuleImpl.readExternal(RuleImpl.java:209)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.rule.JavaDialectRuntimeData.readExternal(JavaDialectRuntimeData.java:195)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at java.util.HashMap.readObject(HashMap.java:1412)
      at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1170)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2177)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:60)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.definitions.impl.KnowledgePackageImpl.readExternal(KnowledgePackageImpl.java:306)
      at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:2117)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2066)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at java.util.HashMap.readObject(HashMap.java:1412)
      at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1170)
      at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2177)
      at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2068)
      at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1572)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:430)
      at org.drools.core.impl.KnowledgeBaseImpl.readExternal(KnowledgeBaseImpl.java:442)
      at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1418)
      at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
      at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:205)
      at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
      at org.jboss.ejb.protocol.remote.EJBClientChannel$MethodInvocation$MethodCallResultProducer.apply(EJBClientChannel.java:1208)
      ... 64 more
      Caused by: java.io.NotSerializableException: org.drools.core.base.mvel.MVELCompilationUnit$InterceptorMap
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
      at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.rule.QueryArgument$Expression.writeExternal(QueryArgument.java:138)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.rule.QueryElement.writeExternal(QueryElement.java:64)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at java.util.ArrayList.writeObject(ArrayList.java:762)
      at sun.reflect.GeneratedMethodAccessor308.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.rule.GroupElement.writeExternal(GroupElement.java:69)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.definitions.rule.impl.RuleImpl.writeExternal(RuleImpl.java:169)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.rule.JavaDialectRuntimeData.writeExternal(JavaDialectRuntimeData.java:132)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at java.util.HashMap.internalWriteEntries(HashMap.java:1785)
      at java.util.HashMap.writeObject(HashMap.java:1362)
      at sun.reflect.GeneratedMethodAccessor1251.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.rule.DialectRuntimeRegistry.writeExternal(DialectRuntimeRegistry.java:49)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.definitions.impl.KnowledgePackageImpl.writeExternal(KnowledgePackageImpl.java:257)
      at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1459)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1430)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at java.util.HashMap.internalWriteEntries(HashMap.java:1785)
      at java.util.HashMap.writeObject(HashMap.java:1362)
      at sun.reflect.GeneratedMethodAccessor1251.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1028)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
      at org.drools.core.impl.KnowledgeBaseImpl.writeExternal(KnowledgeBaseImpl.java:548)
      at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:908)
      at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
      at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
      at org.jboss.ejb.protocol.remote.EJBServerChannel$RemotingInvocationRequest$1.writeInvocationResult(EJBServerChannel.java:956)
      at org.jboss.as.ejb3.remote.AssociationImpl.lambda$receiveInvocationRequest$0(AssociationImpl.java:234)
      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: an exception which occurred:
      in object of type org.drools.core.impl.KnowledgeBaseImpl

              mfusco@redhat.com Mario Fusco
              robert.istvan Róbert István (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: