[ 
https://issues.apache.org/jira/browse/HDDS-6611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17928393#comment-17928393
 ] 

Sammi Chen commented on HDDS-6611:
----------------------------------

The container yaml file has this "checksum" field, which is the SHA-256 HASH of 
the whole yaml file content.  For a schema V2/V3 container, the container file 
checksum check will fail if chunkPath and metadataPath are not included in HASH 
calculation. 

My first code version doesn't introduce schema V4, for I also thought it maybe 
too much to introduce a new schema version for this.  But later, found that 
it's hard to distinguish schema v3 container created before feature is 
finalized, which has the chunkPath and metadataPath,  from those schema V3 
container created after feature is finalized, which doesn't have chunkPath and 
metadataPath, for container yaml file doesn't have information about whether 
the feature is finalized or not. It has "layOutVersion" which is "file per 
block", and "schemaVersion".  To workaround this for V3 container, first try 
with no chunkPath and metadataPath yaml file loading, verify the checksum, if 
verification fails,  if load yaml file with checksum and metadataPath, do the 
checksum calculation and verification again, if verification still fails, then 
it's a final fail. if the verification succeeds, then the container file pass 
the verification. 
The code.  The code is kind ugly,  not easy to understand, maintain.  That's 
why later schema V4 is introduced.






> Remove chunksPath and metadataPath from container yaml file
> -----------------------------------------------------------
>
>                 Key: HDDS-6611
>                 URL: https://issues.apache.org/jira/browse/HDDS-6611
>             Project: Apache Ozone
>          Issue Type: Improvement
>          Components: Ozone Datanode
>            Reporter: Ethan Rose
>            Assignee: Sammi Chen
>            Priority: Major
>              Labels: pull-request-available
>
> Currently the .container files of KeyValueContainers contain absolute paths 
> to the chunks directory and metadata directory, which is used to find the 
> container's contents after reading the container file. This means that if the 
> mount points of volumes specified in hdds.datanode.dir configs change, the 
> datanode will find the container files and try to load the containers, but 
> report that the container is missing pieces because the container file's 
> chunks and metadata directories no longer exist.
> This is somewhat inconsistent with other directory configurations, because it 
> is the only one (as far as I know) where changing its value to a new location 
> that has the same data will cause a failure.
> This task will remove the chunksPath and metadataPath from container yaml 
> file, when container is moved around(replication, or mount point changes), 
> container directory will still be self constructed, and there is no need to 
> update the yaml file. 



--
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

Reply via email to