HesandaLiyanage commented on PR #3193:
URL: https://github.com/apache/james-project/pull/3193#issuecomment-5755563513

   Hi @Arsnael,
   
   Thank you very much for the review and guidance!
   
   ### 1. CI Test Failures Fixed
   The failures in `CassandraBlobIdRepairerIntegrationTest` were caused by an 
overzealous loop guard in `ChunkedBlobStoreDAO.readChunkSlotWithRepair`. When 
`blobIdRepairer.repair()` resolved a corrupted slot reference to its canonical 
counterpart slot reference, the method rejected it because 
`ChunkId.isChunkRef(repairedBlobId)` was true, re-throwing 
`ObjectNotFoundException`.
   
   - Updated `ChunkedBlobStoreDAO` to directly resolve repaired chunk slot 
references without re-entering the repair loop, preserving loop protection only 
when `repairedBlobId.equals(originalBlobId)`.
   - Added unit test coverage 
(`readChunkSlotShouldTriggerRepairWhenRepairedToAnotherSlotRef`) in 
`ChunkedBlobStoreDAOTest`.
   - Verified both `CassandraBlobIdRepairerIntegrationTest` and 
`CassandraBlobIdUpdaterIntegrationTest` pass locally against Cassandra 
testcontainers.
   
   ### 2. Broken Down Into 6 Logical Step Commits
   I have restructured the work from a single monolithic commit into 6 focused, 
incremental commits:
   
   1. **Commit 1 (`eadb532d`):** `JAMES-4231 ADR: Architecture Decision Record 
for S3 Object Compaction`
      - Documents the architectural context, chunk binary layout, Zstd per-slot 
compression, crash-safety guarantees, and Bloom filter GC invariants.
   2. **Commit 2 (`c3a6b84c`):** `JAMES-4231 Blob API: Add range read contract 
and ChunkMarker support`
      - Adds `BlobStoreDAO.readRange` API contract, `RangeByteSlice`, and 
`ChunkMarker` discriminator.
   3. **Commit 3 (`366bcd22`):** `JAMES-4231 S3 BlobStore: Implement byte range 
reads for S3BlobStoreDAO`
      - Implements S3 HTTP range requests with S3 416 
(`RequestedRangeNotSatisfiable`) handling, contract tests, and MinIO 
integration tests.
   4. **Commit 4 (`fa6091bd`):** `JAMES-4231 Storage Strategy: Exclude 
compacted chunks in BloomFilter GC`
      - Updates `BloomFilterGCAlgorithm` to safely ignore compacted chunk 
objects during GC sweeps.
   5. **Commit 5 (`6413283e`):** `JAMES-4231 Compaction Engine: Add chunk 
format, ChunkedBlobStoreDAO, and compaction tasks`
      - Implements `ChunkFormat`, `ChunkId`, `ChunkedBlobStoreDAO`, windowed 
candidate streaming `BlobCompactionAlgorithm`, `BlobCompactionTask`, and unit 
test suite (48 tests).
   6. **Commit 6 (`71d52345`):** `JAMES-4231 Cassandra & WebAdmin: Add metadata 
updater/repairer and WebAdmin API`
      - Implements Cassandra reference mapping, updater, and self-healing 
repairer; wires `BlobCompactionModule` in Guice; exposes `DELETE 
/blobs?scope=compaction` in WebAdmin.
   
   Please let me know if you would like any further adjustments!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to