lib/storage: fix a bug, which prevents from reading pre-v1.90.0 parts

The bug has been introduced in c0b852d50d
This commit is contained in:
Aliaksandr Valialkin 2023-04-14 22:33:05 -07:00
parent cf4701db65
commit f26e480a77
No known key found for this signature in database
GPG key ID: A72BEC6CD3D0DED1

View file

@ -135,19 +135,20 @@ func (ph *partHeader) MustReadMetadata(partPath string) {
ph.Reset()
metadataPath := filepath.Join(partPath, metadataFilename)
metadata, err := os.ReadFile(metadataPath)
if err != nil {
if os.IsNotExist(err) {
// This is a part created before v1.90.0.
// Fall back to reading the metadata from the partPath itsel
if err := ph.ParseFromPath(partPath); err != nil {
logger.Panicf("FATAL: cannot parse metadata from %q: %s", partPath, err)
}
if !fs.IsPathExist(metadataPath) {
// This is a part created before v1.90.0.
// Fall back to reading the metadata from the partPath itsel
if err := ph.ParseFromPath(partPath); err != nil {
logger.Panicf("FATAL: cannot parse metadata from %q: %s", partPath, err)
}
} else {
metadata, err := os.ReadFile(metadataPath)
if err != nil {
logger.Panicf("FATAL: cannot read %q: %s", metadataPath, err)
}
if err := json.Unmarshal(metadata, ph); err != nil {
logger.Panicf("FATAL: cannot parse %q: %s", metadataPath, err)
}
logger.Panicf("FATAL: cannot read %q: %s", metadataPath, err)
}
if err := json.Unmarshal(metadata, ph); err != nil {
logger.Panicf("FATAL: cannot parse %q: %s", metadataPath, err)
}
// Perform various checks