I think we should bring jamm in-tree.

I spoke with Jonathan about this and he's good with either it being a 
single-shot donation to being in-tree on trunk or us going the more formal 
route of an ASF donation as a subproject in the C* ecosystem. I prefer the 
former as it'll make it easier to keep it up to date as we add new JDK support, 
verify CI, and we can still release it separately as another build target.

Context: We rely on the jamm library to determine object sizes on heap and 
trigger some operations based on that.
- jamm: https://github.com/jbellis/jamm
- ObjectSizes.java in cassandra: 
https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/utils/ObjectSizes.java

The jamm project is in a good place from a hygiene perspective; Benjamin did a 
ton of work getting it up to snuff for JDK17. I have a PR for JDK21 support 
over there (link <https://github.com/jbellis/jamm/pull/71>) but was able to 
work around even needing that by signaling to jamm not to calculate 
w/compressedOops, though in retrospect that documentation needs to be updated 
to reflect the coupling with using genZGC: 
https://github.com/jmckenzie-dev/cassandra/blob/jdk21_support/build.xml#L343-L344

So. What do we think?

Reply via email to