[ https://issues.apache.org/jira/browse/HDDS-13245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ethan Rose reassigned HDDS-13245: --------------------------------- Assignee: Aswin Shakil (was: Ethan Rose) > Container scanner needs to account for deleted blocks when building the > merkle tree > ----------------------------------------------------------------------------------- > > Key: HDDS-13245 > URL: https://issues.apache.org/jira/browse/HDDS-13245 > Project: Apache Ozone > Issue Type: Sub-task > Reporter: Aswin Shakil > Assignee: Aswin Shakil > Priority: Major > > Currently the container scanner rebuilds the merkle tree based only on what > it sees on disk. This will cause the data checksum to change when blocks are > deleted, which is not desirable. The scanner should also consult the list of > deleted blocks already stored in the checksum file and add those to the tree > it generates. > There are a few parts to this change: > * Change the persisted list of deleted blocks from a list of IDs to a list > {{BlockMerkleTree}} protos so that we also have the checksum there to > reference, instead of trying to find it in the previous tree. > ** The block checksum used here should be built from the chunk checksums in > RocksDB, not the block itself, otherwise it might diverge between replicas if > deleting a corrupted block. > ** We can clear out the chunk children from the {{BlockMerkleTree}} before > adding it to this list to save space. They will never be read. > * When reconciling, if a peer has marked a block as deleted and we have not, > but we also don't have the block, we need to add that block and its checksum > to our deleted block list. > ** This allows checksums to converge for containers that had blocks deleted > before upgrading to reconciliation. > * When reconciling, if we have a checksum mismatch with a peer's deleted > block, log a warning. > ** If our copy is corrupted, it is expected to be deleted and that will > resolve the issue. > ** If our copy is deleted and the checksum doesn't match, we cannot resolve > the issue. > *** If the checksum written at the time of delete doesn't match, it means it > didn't match in RocksDB either, which is already unrecoverable. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org For additional commands, e-mail: issues-h...@ozone.apache.org