Serialization verification in ParentReferenceChecker introduced a performance regression in external tests #5275
-
Current BehaviorWhen upgrading the dependency of our library powsybl-core from RDF4J v4.3.2 to newer versions (v4.3.3 and forward), we detected a consequent performance regression: the duration of our tests increased a lot. For example, on one of our modules that uses RDF4J:
(see powsybl/powsybl-core#3365 for more information about this issue). After some investigation, I realized the difference in duration comes from the changes introduced in #4626 and especially the line This class Expected BehaviorThere are two ways we see things could be expected:
Or maybe we use RDF4J the wrong way and we should be all using Steps To Reproduce
And then run the unit tests for the module "CGMES conversion". I'm not familiar enough with RDF4J to provide a test specific to only RDF4J. Version4.3.3 and newer (also tested on 4.1.15 and 5.1.2) Are you interested in contributing a solution yourself?Perhaps? Anything else?No response |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments
-
You can skip it by setting this variable here: |
Beta Was this translation helpful? Give feedback.
-
In general it's good to leave activated. We've had a lot of problems with shared objects in the abstract query tree, and any code that interacts with the query engine can trigger an edge case that we haven't covered yet. That being said, unless you have introduced your own optimisers or are manipulating the abstract query tree in some other way, then you should be fine to skip it since we have pretty decent coverage in RDF4J now. |
Beta Was this translation helpful? Give feedback.
-
And yeah, we've managed to promise support for Java serialisation, and we haven't previously had any test coverage for it. So that got backed into that code. |
Beta Was this translation helpful? Give feedback.
-
Oh right, I didn't see the modification done in #4661, as I was comparing the versions 4.3.2 and 4.3.3. We haven't introduced any optimizer of our own but in cas that happens in the future, I'll leave a comment in our code to warn around the Thanks for your answer! |
Beta Was this translation helpful? Give feedback.
You can skip it by setting this variable here:
rdf4j/core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer/ParentReferenceChecker.java
Line 44 in c931f34