From e3eba8189a5d7229be702412a13003c8bdffef65 Mon Sep 17 00:00:00 2001 From: gammazero Date: Tue, 13 Apr 2021 21:47:02 -0700 Subject: [PATCH] fix missed error check --- cmd/ipfs/daemon.go | 5 ++++- cmd/ipfs/migration.go | 35 +++++++++++++++++++++++++---------- cmd/ipfs/migration_test.go | 23 ++++++++++++----------- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/cmd/ipfs/daemon.go b/cmd/ipfs/daemon.go index c8eba3d77ec6..4b86805fcd38 100644 --- a/cmd/ipfs/daemon.go +++ b/cmd/ipfs/daemon.go @@ -476,7 +476,10 @@ func daemonFunc(req *cmds.Request, re cmds.ResponseEmitter, env cmds.Environment // Add any files downloaded by migration. if keepMigrations { - addMigrations(cctx.Context(), node, fetcher, pinMigrations) + err = addMigrations(cctx.Context(), node, fetcher, pinMigrations) + if err != nil { + fmt.Fprintln(os.Stderr, "Could not add migragion to IPFS:", err) + } fetcher.Close() os.RemoveAll(migrations.DownloadDirectory) migrations.DownloadDirectory = "" diff --git a/cmd/ipfs/migration.go b/cmd/ipfs/migration.go index 3604a26621a5..a2f2e7e3ad9e 100644 --- a/cmd/ipfs/migration.go +++ b/cmd/ipfs/migration.go @@ -16,6 +16,7 @@ import ( "github.com/ipfs/go-ipfs/core/coreapi" "github.com/ipfs/go-ipfs/repo/fsrepo/migrations" "github.com/ipfs/go-ipfs/repo/fsrepo/migrations/ipfsfetcher" + coreiface "github.com/ipfs/interface-go-ipfs-core" "github.com/ipfs/interface-go-ipfs-core/options" ipath "github.com/ipfs/interface-go-ipfs-core/path" "github.com/libp2p/go-libp2p-core/peer" @@ -174,9 +175,9 @@ func addMigrationPaths(ctx context.Context, node *core.IpfsNode, peerInfo peer.A // Connect to temp node if err := ipfs.Swarm().Connect(ctx, peerInfo); err != nil { - return fmt.Errorf("cound not connec to migration peer %q: %s", peerInfo.ID, err) + return fmt.Errorf("could not connect to migration peer %q: %s", peerInfo.ID, err) } - fmt.Printf("conneced to migration peer %q\n", peerInfo) + fmt.Printf("connected to migration peer %q\n", peerInfo) if pin { pinApi := ipfs.Pin() @@ -194,23 +195,37 @@ func addMigrationPaths(ctx context.Context, node *core.IpfsNode, peerInfo peer.A // Add migration files for _, ipfsPath := range paths { - nd, err := ufs.Get(ctx, ipfsPath) + err = ipfsGet(ctx, ufs, ipfsPath) if err != nil { return err } + } - fnd, ok := nd.(files.File) - if !ok { - return fmt.Errorf("not a file node: %q", ipfsPath) - } - io.Copy(ioutil.Discard, fnd) - nd.Close() - fmt.Printf("Added migration file: %q\n", ipfsPath) + return nil +} + +func ipfsGet(ctx context.Context, ufs coreiface.UnixfsAPI, ipfsPath ipath.Path) error { + nd, err := ufs.Get(ctx, ipfsPath) + if err != nil { + return err } + defer nd.Close() + fnd, ok := nd.(files.File) + if !ok { + return fmt.Errorf("not a file node: %q", ipfsPath) + } + _, err = io.Copy(ioutil.Discard, fnd) + if err != nil { + return fmt.Errorf("could not read migration: %w", err) + } + fmt.Printf("Added migration file: %q\n", ipfsPath) return nil } +// parsePeers parses multiaddr strings in the form: +// /////p2p/,.. +// and parses them into a list of peer.AddrInfo, in no particular order func parsePeers(migrationPeers string) ([]peer.AddrInfo, error) { var peers []string for _, p := range strings.Split(migrationPeers, ",") { diff --git a/cmd/ipfs/migration_test.go b/cmd/ipfs/migration_test.go index fa74ac92c1cf..cab50284a477 100644 --- a/cmd/ipfs/migration_test.go +++ b/cmd/ipfs/migration_test.go @@ -68,16 +68,17 @@ func TestParsePeers(t *testing.T) { t.Fatal("expected 2 peers, got:", len(peers)) } - if peers[0].ID.String() != "12D3KooWGC6TvWhfajpgX6wvJHMYvKpDMXPb3ZnCZ6dMoaMtimQ5" { - t.Fatal("wrong peer id:", peers[0].ID) - } - if peers[0].Addrs[0].String() != "/ip4/127.0.0.1/tcp/4001" { - t.Fatal("wrong peer addr") - } - if peers[1].ID.String() != "12D3KooWGC6TvWhfagifX6wvJHMYvKpDMXPb3ZnCZ6dMoaMtimQ5" { - t.Fatal("wrong peer id:", peers[1].ID) - } - if peers[1].Addrs[0].String() != "/ip4/127.0.0.1/udp/4001/quic" { - t.Fatal("wrong peer addr") + for i := range peers { + pid := peers[i].ID.String() + if pid != "12D3KooWGC6TvWhfajpgX6wvJHMYvKpDMXPb3ZnCZ6dMoaMtimQ5" && + pid != "12D3KooWGC6TvWhfagifX6wvJHMYvKpDMXPb3ZnCZ6dMoaMtimQ5" { + t.Fatal("wrong peer id:", pid) + } + addr := peers[i].Addrs[0].String() + if addr != "/ip4/127.0.0.1/tcp/4001" && addr != "/ip4/127.0.0.1/udp/4001/quic" { + t.Fatal("wrong peer addr:", addr) + } } } + +func Test