Hello all In https://github.com/apache/polaris/issues/761, there is a discussion on whether the EntityCache is thread-safe, prone to race conditions, inconsistencies, etc...
To determine whether these issues are real, I worked on JCStress [1] tests. JCStress is a testing framework developed by Oracle that helps verify correct behavior of concurrent Java code. I would like to discuss the possibility to add such tests to the Polaris project. Here is an example of tests: https://github.com/pingtimeout/polaris/blob/jcstress/jcstress-tests/src/jcstress/java/org/apache/polaris/core/persistence/cache/EntityCacheCoherenceTest.java#L34-L99. And here is an example of the insights we can get out of them: https://docs.google.com/document/d/1ZF5WGiSOoqg9JpSvFfhuPOK0QrqeY431/edit?tab=t.0#bookmark=id.op4496ui0vzi . These tests are similar to unit tests, in that there should be no dependency on external components, they should be fast so that millions of invocations can be performed in a reasonable timeframe, and they should be fine-grained. To that extent, it would make sense to colocate them with the codebase, in the main repository. But JCStress is released under the GPL-v2, which seems incompatible with the ASLv2 [2]. Does anybody have any experience with such integrations? We would make use of the JCStress framework, as opposed to extending it. But couldn't this be considered derivative work? In which case, should the concurrency tests be developed as a separate project (and/or in a separate repository) so that they themselves are released under the GPL-v2 ? Thoughts? [1] https://github.com/openjdk/jcstress [2] https://www.apache.org/licenses/GPL-compatibility.html -- Pierre