Repository navigation
JAMES-4231 BlobIdUpdater SPI and Cassandra reference relocation - #3260
HesandaLiyanage wants to merge 4 commits into
Conversation
Arsnael
left a comment
There was a problem hiding this comment.
No tests at all here for this?
You're right, I missed the tests here. My bad. I'll add them and push an update :) |
No problem, it's alright. Thanks :) |
chibenwa
left a comment
There was a problem hiding this comment.
Hello,
Thanks for this work.
I would like Cassandra class to be collocated in a dedicated package. How about org.apache.james.mailbox.cassandra.object.compaction ?
Sounds good. I'll move the Cassandra compaction classes into org.apache.james.mailbox.cassandra.object.compaction and update the tests and imports accordingly. |
maven_3_latest on ASF Jenkins now resolves to Maven 3.10.0. Develocity maven extension 2.2.1 does not support it: every build fails in DevelocityLifecycleManager afterProjectsRead, as Maven 3.10 no longer provides the PluginDescriptorCache the extension injects. Maven >= 3.10.0 requires the extension >= 2.6.0 (https://docs.develocity.ai/compatibility/). 2.6.1 needs Develocity 2026.3, develocity.apache.org runs 2026.3.1. It keeps working with Maven 3.9.x. common-custom-user-data-maven-extension stays at 2.1.0 (see 9959c63). (cherry picked from commit 2c7e560)
Scope
Third incremental PR for JAMES-4231, following merged #3244 and #3245. Adds the typed
BlobIdUpdaterSPI and a Cassandra implementation for relocating message header, body, and attachment references.Targets
feature/s3-object-compaction. The complete implementation remains available in draft #3193.Design
messageV3andattachmentV2references once, notify the liveness observer, and persist predicate-matching references in a paged Cassandra index scoped by run and blob ID.messageV3as the source of truth.org.apache.james.mailbox.cassandra.object.compaction. UseRunIdthroughout the updater/index API.FULL, preserving header/body content and propagating a persistent miss.Validation
Production compilation passed with JDK 21:
Added 41 tests after review, including coverage for typed run IDs and full-content recovery. All passed alongside 51 existing secondary-DAO regression tests after the package move: 92 tests, zero failures, errors, or skips. The configured Checkstyle check also passed.
RunIdtests: UUID storage/log representation, equality, distinct generated identifiers, and null rejection.CassandraMessageIdDAOTest(30 tests) andCassandraMessageIdToImapUidDAOTest(21 tests).Successful test command, using JDK 21 and Docker/Testcontainers Cassandra:
Limits and follow-up