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

Reply via email to