Skip to content

Commit 3717a8c

Browse files
publishable: relax block files version checks (#18353)
it's enough if they remain within min supported and current version.
1 parent 88984a2 commit 3717a8c

File tree

2 files changed

+29
-22
lines changed

2 files changed

+29
-22
lines changed

cmd/utils/app/snapshots_cmd.go

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,44 +1112,47 @@ func checkIfBlockSnapshotsPublishable(snapDir string) error {
11121112
sum += res.To - res.From
11131113
headerSegName := info.Name()
11141114
headerSegVer := res.Version
1115-
if !headerSegVer.Eq(verMap["headers"]["seg"].Current) {
1116-
return fmt.Errorf("expected version %s, filename: %s", verMap["header"]["seg"].Current.String(), info.Name())
1117-
}
1118-
idxHeaderName := strings.Replace(headerSegName, ".seg", ".idx", 1)
1119-
headerIdxVer := verMap["headers"]["idx"].Current
1120-
idxHeaderName = strings.Replace(idxHeaderName, headerSegVer.String(), headerIdxVer.String(), 1)
1121-
if _, err := os.Stat(filepath.Join(snapDir, idxHeaderName)); err != nil {
1122-
return fmt.Errorf("missing index file %s", idxHeaderName)
1115+
1116+
if !verMap["headers"]["seg"].Supports(headerSegVer) {
1117+
return fmt.Errorf("expected version %s, filename: %s", verMap["headers"]["seg"].Current.String(), info.Name())
11231118
}
11241119
// check that all files exist
11251120
for _, snapType := range []string{"headers", "transactions", "bodies"} {
11261121
segName := strings.Replace(headerSegName, "headers", snapType, 1)
11271122
segVer := verMap[snapType]["seg"].Current
11281123
segName = strings.Replace(segName, headerSegVer.String(), segVer.String(), 1)
1129-
// check that the file exist
1130-
if exists, err := dir2.FileExist(filepath.Join(snapDir, segName)); err != nil {
1124+
segNameMasked, err := version.ReplaceVersionWithMask(segName)
1125+
if err != nil {
11311126
return err
1132-
} else if !exists {
1133-
return fmt.Errorf("missing file %s", segName)
1127+
}
1128+
segName, ver, ok, err := version.FindFilesWithVersionsByPattern(filepath.Join(snapDir, segNameMasked))
1129+
if err != nil {
1130+
return fmt.Errorf("finding %s: %w", segNameMasked, err)
1131+
}
1132+
if !ok {
1133+
return fmt.Errorf("missing file-%s", segNameMasked)
1134+
}
1135+
if !verMap[snapType]["seg"].Supports(ver) {
1136+
return fmt.Errorf("expected version %s, filename: %s", verMap[snapType]["seg"].Current.String(), segName)
11341137
}
11351138
// check that the index file exist
11361139
idxName := strings.Replace(segName, ".seg", ".idx", 1)
1137-
idxVer := verMap[snapType]["idx"].Current
1138-
idxName = strings.Replace(idxName, segVer.String(), idxVer.String(), 1)
1139-
if exists, err := dir2.FileExist(filepath.Join(snapDir, idxName)); err != nil {
1140+
idxNameMasked, err := version.ReplaceVersionWithMask(idxName)
1141+
if err != nil {
11401142
return err
1141-
} else if !exists {
1142-
return fmt.Errorf("missing index file %s", idxName)
1143+
}
1144+
if err := version.CheckIsThereFileWithSupportedVersion(idxNameMasked, verMap[snapType]["idx"].MinSupported); err != nil {
1145+
return fmt.Errorf("index file %s: %w", idxName, err)
11431146
}
11441147
if snapType == "transactions" {
11451148
// check that the tx index file exist
11461149
txIdxName := strings.Replace(segName, "transactions.seg", "transactions-to-block.idx", 1)
1147-
txIdxVer := verMap["transactions-to-block"]["idx"].Current
1148-
txIdxName = strings.Replace(txIdxName, segVer.String(), txIdxVer.String(), 1)
1149-
if exists, err := dir2.FileExist(filepath.Join(snapDir, txIdxName)); err != nil {
1150+
txIdxNameMasked, err := version.ReplaceVersionWithMask(txIdxName)
1151+
if err != nil {
11501152
return err
1151-
} else if !exists {
1152-
return fmt.Errorf("missing tx index file %s", txIdxName)
1153+
}
1154+
if err := version.CheckIsThereFileWithSupportedVersion(txIdxNameMasked, verMap["transactions-to-block"]["idx"].MinSupported); err != nil {
1155+
return fmt.Errorf("index file %s: %w", txIdxName, err)
11531156
}
11541157
}
11551158
}

db/version/file_version.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ func (v Versions) String() string {
178178
return v.Current.String()
179179
}
180180

181+
func (v Versions) Supports(ver Version) bool {
182+
return ver.GreaterOrEqual(v.MinSupported) && ver.LessOrEqual(v.Current)
183+
}
184+
181185
// FindFilesWithVersionsByPattern return an filepath by pattern
182186
func FindFilesWithVersionsByPattern(pattern string) (string, Version, bool, error) {
183187
matches, err := filepath.Glob(pattern)

0 commit comments

Comments
 (0)