Skip to content

Commit d7588dd

Browse files
cp: publishable fixes from main (#18662)
1 parent 4d7769c commit d7588dd

File tree

3 files changed

+48
-24
lines changed

3 files changed

+48
-24
lines changed

cmd/utils/app/snapshots_cmd.go

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,44 +1253,47 @@ func checkIfBlockSnapshotsPublishable(snapDir string) error {
12531253
sum += res.To - res.From
12541254
headerSegName := info.Name()
12551255
headerSegVer := res.Version
1256-
if !headerSegVer.Eq(verMap["headers"]["seg"].Current) {
1257-
return fmt.Errorf("expected version %s, filename: %s", verMap["header"]["seg"].Current.String(), info.Name())
1258-
}
1259-
idxHeaderName := strings.Replace(headerSegName, ".seg", ".idx", 1)
1260-
headerIdxVer := verMap["headers"]["idx"].Current
1261-
idxHeaderName = strings.Replace(idxHeaderName, headerSegVer.String(), headerIdxVer.String(), 1)
1262-
if _, err := os.Stat(filepath.Join(snapDir, idxHeaderName)); err != nil {
1263-
return fmt.Errorf("missing index file %s", idxHeaderName)
1256+
1257+
if !verMap["headers"]["seg"].Supports(headerSegVer) {
1258+
return fmt.Errorf("expected version %s, filename: %s", verMap["headers"]["seg"].Current.String(), info.Name())
12641259
}
12651260
// check that all files exist
12661261
for _, snapType := range []string{"headers", "transactions", "bodies"} {
12671262
segName := strings.Replace(headerSegName, "headers", snapType, 1)
12681263
segVer := verMap[snapType]["seg"].Current
12691264
segName = strings.Replace(segName, headerSegVer.String(), segVer.String(), 1)
1270-
// check that the file exist
1271-
if exists, err := dir2.FileExist(filepath.Join(snapDir, segName)); err != nil {
1265+
segNameMasked, err := version.ReplaceVersionWithMask(segName)
1266+
if err != nil {
12721267
return err
1273-
} else if !exists {
1274-
return fmt.Errorf("missing file %s", segName)
1268+
}
1269+
segName, ver, ok, err := version.FindFilesWithVersionsByPattern(filepath.Join(snapDir, segNameMasked))
1270+
if err != nil {
1271+
return fmt.Errorf("finding %s: %w", segNameMasked, err)
1272+
}
1273+
if !ok {
1274+
return fmt.Errorf("missing file-%s", segNameMasked)
1275+
}
1276+
if !verMap[snapType]["seg"].Supports(ver) {
1277+
return fmt.Errorf("expected version %s, filename: %s", verMap[snapType]["seg"].Current.String(), segName)
12751278
}
12761279
// check that the index file exist
12771280
idxName := strings.Replace(segName, ".seg", ".idx", 1)
1278-
idxVer := verMap[snapType]["idx"].Current
1279-
idxName = strings.Replace(idxName, segVer.String(), idxVer.String(), 1)
1280-
if exists, err := dir2.FileExist(filepath.Join(snapDir, idxName)); err != nil {
1281+
idxNameMasked, err := version.ReplaceVersionWithMask(idxName)
1282+
if err != nil {
12811283
return err
1282-
} else if !exists {
1283-
return fmt.Errorf("missing index file %s", idxName)
1284+
}
1285+
if err := version.CheckIsThereFileWithSupportedVersion(idxNameMasked, verMap[snapType]["idx"].MinSupported); err != nil {
1286+
return fmt.Errorf("index file %s: %w", idxName, err)
12841287
}
12851288
if snapType == "transactions" {
12861289
// check that the tx index file exist
12871290
txIdxName := strings.Replace(segName, "transactions.seg", "transactions-to-block.idx", 1)
1288-
txIdxVer := verMap["transactions-to-block"]["idx"].Current
1289-
txIdxName = strings.Replace(txIdxName, segVer.String(), txIdxVer.String(), 1)
1290-
if exists, err := dir2.FileExist(filepath.Join(snapDir, txIdxName)); err != nil {
1291+
txIdxNameMasked, err := version.ReplaceVersionWithMask(txIdxName)
1292+
if err != nil {
12911293
return err
1292-
} else if !exists {
1293-
return fmt.Errorf("missing tx index file %s", txIdxName)
1294+
}
1295+
if err := version.CheckIsThereFileWithSupportedVersion(txIdxNameMasked, verMap["transactions-to-block"]["idx"].MinSupported); err != nil {
1296+
return fmt.Errorf("index file %s: %w", txIdxName, err)
12941297
}
12951298
}
12961299
}

db/snapcfg/util.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"github.com/erigontech/erigon/common/dbg"
3939
"github.com/erigontech/erigon/common/log/v3"
4040
"github.com/erigontech/erigon/db/snaptype"
41+
"github.com/erigontech/erigon/db/version"
4142
ver "github.com/erigontech/erigon/db/version"
4243
"github.com/erigontech/erigon/execution/chain/networkname"
4344
)
@@ -170,14 +171,25 @@ func (p Preverified) Typed(types []snaptype.Type) Preverified {
170171
//typeName, _ := strings.CutSuffix(parts[2], filepath.Ext(parts[2]))
171172
typeName := name[lastSep+1 : dot]
172173
include := false
174+
idxIndex := 0
173175
if strings.Contains(name, "transactions-to-block") { // transactions-to-block should just be "transactions" type
176+
idxIndex = 1
174177
typeName = "transactions"
175178
}
179+
if strings.Contains(name, "blocksidecars") {
180+
typeName = "blobsidecars"
181+
}
176182

177183
for _, typ := range types {
178184
if typeName == typ.Name() {
179-
preferredVersion = typ.Versions().Current
180-
minVersion = typ.Versions().MinSupported
185+
var versions version.Versions
186+
if strings.HasSuffix(p.Name, "idx") {
187+
versions = typ.Indexes()[idxIndex].Version
188+
} else {
189+
versions = typ.Versions()
190+
}
191+
preferredVersion = versions.Current
192+
minVersion = versions.MinSupported
181193
include = true
182194
break
183195
}
@@ -223,6 +235,11 @@ func (p Preverified) Typed(types []snaptype.Type) Preverified {
223235
slices.SortFunc(versioned, func(i, j PreverifiedItem) int {
224236
return strings.Compare(i.Name, j.Name)
225237
})
238+
if len(p.Items) != len(versioned) {
239+
log.Root().Warn("Preverified list reduced after applying type filter", "from", len(p.Items), "to", len(versioned))
240+
} else {
241+
log.Root().Debug("Preverified list has same len after applying type filter", "len", len(p.Items))
242+
}
226243
p.Items = versioned
227244
return p
228245
}

db/version/file_version.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,10 @@ func (v Versions) String() string {
185185
return v.Current.String()
186186
}
187187

188+
func (v Versions) Supports(ver Version) bool {
189+
return ver.GreaterOrEqual(v.MinSupported) && ver.LessOrEqual(v.Current)
190+
}
191+
188192
// FindFilesWithVersionsByPattern return an filepath by pattern
189193
func FindFilesWithVersionsByPattern(pattern string) (string, Version, bool, error) {
190194
matches, err := filepath.Glob(pattern)

0 commit comments

Comments
 (0)