]
Mario Fusco resolved DROOLS-4565.
---------------------------------
Resolution: Done
Fixed by
MVELDialectRuntimeData is not thread safe
-----------------------------------------
Key: DROOLS-4565
URL:
https://issues.jboss.org/browse/DROOLS-4565
Project: Drools
Issue Type: Bug
Components: core engine
Affects Versions: 7.16.0.Final
Environment: Java 11.0.2
Different OS
Reporter: Timo Gutjahr
Assignee: Mario Fusco
Priority: Major
Attachments: ForkJoinPool-1-worker-1.txt, NPE.txt, main.txt
MVELDialectRuntimeData#mvelReaders is accessed concurrently but is not thread safe due to
the usage of a HashSet. This may cause lost updates. (See [^ForkJoinPool-1-worker-1.txt]
and [^main.txt] )
If this happens and the kie base is serialized and deserialized it results in a
NullPointerException at runtime. (See [^NPE.txt] )
We observed that the entries in this Set (mvelReaders) are serialized and important for
the deserialization step because they contain information about transient objects that
have to be re-initialized after deserialization.
While losing this information due to concurrent access does not cause problems during
compilation, serialization and deserialization of a kie base, they may cause
NullPointerExceptions at runtime when transient fields remain uninitialized.