Skip to content

Commit 31a5d37

Browse files
committed
output piece_cid_v2
1 parent 6aa1e54 commit 31a5d37

2 files changed

Lines changed: 33 additions & 12 deletions

File tree

cmd/curio/storacha-migration.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import (
1313
"github.com/urfave/cli/v2"
1414
"golang.org/x/xerrors"
1515

16+
commcid "github.com/filecoin-project/go-fil-commcid"
1617
"github.com/filecoin-project/go-padreader"
1718
"github.com/filecoin-project/go-state-types/abi"
1819

19-
"github.com/filecoin-project/curio/cmd/curio/internal/translations"
2020
"github.com/filecoin-project/curio/deps"
2121
"github.com/filecoin-project/curio/harmony/harmonydb"
2222
"github.com/filecoin-project/curio/lib/parkpiece"
@@ -34,8 +34,8 @@ type importPiecesOutput struct {
3434
}
3535

3636
type storachaImportResult struct {
37-
Imported bool
38-
PieceCID string
37+
Imported bool
38+
PieceCIDV2 string
3939
}
4040

4141
type storachaParkedPieceState struct {
@@ -53,7 +53,7 @@ type storachaFinalRecoveryRow struct {
5353

5454
var importPiecesCmd = &cli.Command{
5555
Name: "import-pieces",
56-
Usage: translations.T("Imports already existing pieces from storage to piece park system"),
56+
Usage: "Imports already existing pieces from storage to piece park system",
5757
Flags: []cli.Flag{
5858
&cli.StringFlag{
5959
Name: "source",
@@ -183,7 +183,7 @@ func runImportPieces(ctx context.Context, dep *deps.Deps, sourcePath, targetPath
183183
return out, err
184184
}
185185
if result.Imported {
186-
out.Pieces = append(out.Pieces, result.PieceCID)
186+
out.Pieces = append(out.Pieces, result.PieceCIDV2)
187187
out.Count++
188188
}
189189
}
@@ -242,7 +242,7 @@ func runImportPieces(ctx context.Context, dep *deps.Deps, sourcePath, targetPath
242242
return out, err
243243
}
244244
if result.Imported {
245-
out.Pieces = append(out.Pieces, result.PieceCID)
245+
out.Pieces = append(out.Pieces, result.PieceCIDV2)
246246
out.Count++
247247
}
248248
}
@@ -398,7 +398,7 @@ func importStagedStorachaPiece(ctx context.Context, dep *deps.Deps, storageID st
398398
}
399399
}
400400

401-
return storachaImportResult{Imported: true, PieceCID: pi.PieceCIDV1.String()}, nil
401+
return storachaImportResult{Imported: true, PieceCIDV2: strings.TrimSuffix(filepath.Base(stagingPath), ".car")}, nil
402402
}
403403

404404
// recoverFinalStorachaPieces scans incomplete storacha-migration rows where the
@@ -441,14 +441,32 @@ func recoverFinalStorachaPieces(ctx context.Context, dep *deps.Deps, storageID s
441441
return err
442442
}
443443
if imported {
444-
out.Pieces = append(out.Pieces, row.PieceCID)
444+
pcidV2, err := storachaPieceCIDV2FromRow(row)
445+
if err != nil {
446+
return err
447+
}
448+
out.Pieces = append(out.Pieces, pcidV2)
445449
out.Count++
446450
}
447451
}
448452

449453
return nil
450454
}
451455

456+
func storachaPieceCIDV2FromRow(row storachaFinalRecoveryRow) (string, error) {
457+
pcidV1, err := cid.Parse(row.PieceCID)
458+
if err != nil {
459+
return "", xerrors.Errorf("parsing piece cid %s: %w", row.PieceCID, err)
460+
}
461+
462+
pcidV2, err := commcid.PieceCidV2FromV1(pcidV1, uint64(row.RawSize))
463+
if err != nil {
464+
return "", xerrors.Errorf("getting piece cid v2: %w", err)
465+
}
466+
467+
return pcidV2.String(), nil
468+
}
469+
452470
// recoverFinalStorachaPiece handles the post-rename crash window for one DB row.
453471
// It requires target/s-t00-<id> to exist, rebuilds the piece info from the DB
454472
// row, reuses the same claim/ref checks as staged import, then declares the

cmd/curio/storacha-migration_test.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type storachaMigrationTestEnv struct {
3333
}
3434

3535
type storachaPieceFixture struct {
36+
cidV2 string
3637
fileName string
3738
info *mk20.PieceInfo
3839
data []byte
@@ -97,7 +98,8 @@ func TestStorachaMigrationFreshImport(t *testing.T) {
9798
out, err := runImportPieces(env.ctx, env.dep, env.sourceDir, env.targetDir, 20)
9899
require.NoError(t, err)
99100
require.Equal(t, 1, out.Count)
100-
require.Equal(t, []string{fx.info.PieceCIDV1.String()}, out.Pieces)
101+
require.Equal(t, []string{fx.cidV2}, out.Pieces)
102+
require.NotEqual(t, []string{fx.info.PieceCIDV1.String()}, out.Pieces)
101103

102104
pp := parkedPieceByCID(t, env, fx)
103105
require.True(t, pp.complete)
@@ -375,7 +377,7 @@ func TestStorachaMigrationBatchProcessesStagingBeforeSource(t *testing.T) {
375377
out, err := runImportPieces(env.ctx, env.dep, env.sourceDir, env.targetDir, 1)
376378
require.NoError(t, err)
377379
require.Equal(t, 1, out.Count)
378-
require.Equal(t, []string{staged.info.PieceCIDV1.String()}, out.Pieces)
380+
require.Equal(t, []string{staged.cidV2}, out.Pieces)
379381

380382
stagedPP := parkedPieceByCID(t, env, staged)
381383
assertFileBytes(t, storachaFinalPiecePath(env.targetDir, stagedPP.id), staged.data)
@@ -397,7 +399,7 @@ func TestStorachaMigrationBatchProcessesFinalRecoveryBeforeSource(t *testing.T)
397399
out, err := runImportPieces(env.ctx, env.dep, env.sourceDir, env.targetDir, 1)
398400
require.NoError(t, err)
399401
require.Equal(t, 1, out.Count)
400-
require.Equal(t, []string{recovered.info.PieceCIDV1.String()}, out.Pieces)
402+
require.Equal(t, []string{recovered.cidV2}, out.Pieces)
401403

402404
pp := parkedPieceByID(t, env, pieceID)
403405
require.True(t, pp.complete)
@@ -415,7 +417,7 @@ func TestStorachaMigrationInvalidStagedFileDoesNotConsumeBatch(t *testing.T) {
415417
out, err := runImportPieces(env.ctx, env.dep, env.sourceDir, env.targetDir, 1)
416418
require.NoError(t, err)
417419
require.Equal(t, 1, out.Count)
418-
require.Equal(t, []string{source.info.PieceCIDV1.String()}, out.Pieces)
420+
require.Equal(t, []string{source.cidV2}, out.Pieces)
419421

420422
pp := parkedPieceByCID(t, env, source)
421423
assertFileBytes(t, storachaFinalPiecePath(env.targetDir, pp.id), source.data)
@@ -527,6 +529,7 @@ func newStorachaPieceFixture(t *testing.T, seed uint64) storachaPieceFixture {
527529
require.NoError(t, err)
528530

529531
return storachaPieceFixture{
532+
cidV2: pcidV2.String(),
530533
fileName: pcidV2.String() + ".car",
531534
info: info,
532535
data: bytes.Repeat([]byte{byte(seed % 251)}, int(rawSize)),

0 commit comments

Comments
 (0)