This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 159fa91d1ac HDDS-14763. Reconciliation will incorrectly skip blocks
with only metadata present (#9862)
159fa91d1ac is described below
commit 159fa91d1ac62a9ed7bedd22d7e513239273f1e2
Author: Ethan Rose <[email protected]>
AuthorDate: Wed Mar 4 13:26:20 2026 -0500
HDDS-14763. Reconciliation will incorrectly skip blocks with only metadata
present (#9862)
---
.../hadoop/ozone/container/keyvalue/KeyValueHandler.java | 16 +++++-----------
1 file changed, 5 insertions(+), 11 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
index ef598f3c0cb..6f93bcef4fd 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
@@ -1696,17 +1696,11 @@ private void
reconcileContainerInternal(DNContainerOperationClient dnClient, Con
for (ContainerProtos.BlockMerkleTree missingBlock :
diffReport.getMissingBlocks()) {
try {
long localID = missingBlock.getBlockID();
- BlockID blockID = new BlockID(containerID, localID);
- if (getBlockManager().blockExists(container, blockID)) {
- LOG.warn("Cannot reconcile block {} in container {} which was
previously reported missing but is now " +
- "present. Our container merkle tree is stale.", localID,
containerID);
- } else {
- long chunksInBlockRetrieved =
reconcileChunksPerBlock(kvContainer, pipeline, dnClient, localID,
- missingBlock.getChunkMerkleTreeList(), updatedTreeWriter,
chunkByteBuffer);
- if (chunksInBlockRetrieved != 0) {
- allBlocksUpdated.add(localID);
- numMissingBlocksRepaired++;
- }
+ long chunksInBlockRetrieved = reconcileChunksPerBlock(kvContainer,
pipeline, dnClient, localID,
+ missingBlock.getChunkMerkleTreeList(), updatedTreeWriter,
chunkByteBuffer);
+ if (chunksInBlockRetrieved >= 0) {
+ allBlocksUpdated.add(localID);
+ numMissingBlocksRepaired++;
}
} catch (IOException e) {
LOG.error("Error while reconciling missing block for block {} in
container {}", missingBlock.getBlockID(),
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]