{"record":{"id":"b5cc821f4d005f04","repo":"ipfs/kubo","slug":"nothing-downloaded-by-ipfs-fetcher","errorCode":null,"errorMessage":"nothing downloaded by ipfs fetcher","messagePattern":"nothing downloaded by ipfs fetcher","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/ipfs/kubo/add_migrations.go","lineNumber":105,"sourceCode":"\t\t\treturn err\n\t\t}\n\n\t\tipfsPath, err := ufs.Add(ctx, files.NewReaderStatFile(f, fi), options.Unixfs.Pin(pin, \"\"))\n\t\tf.Close()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfmt.Printf(\"Added migration file %q: %s\\n\", filepath.Base(filePath), ipfsPath)\n\t}\n\n\treturn nil\n}\n\n// addMigrationPaths adds the files at paths to IPFS, optionally pinning\n// them. This is done after connecting to the peer.\nfunc addMigrationPaths(ctx context.Context, node *core.IpfsNode, peerInfo peer.AddrInfo, paths []path.Path, pin bool) error {\n\tif len(paths) == 0 {\n\t\treturn errors.New(\"nothing downloaded by ipfs fetcher\")\n\t}\n\tif len(peerInfo.Addrs) == 0 {\n\t\treturn errors.New(\"no local swarm address for migration node\")\n\t}\n\n\tipfs, err := coreapi.NewCoreAPI(node)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Connect to temp node\n\tif err := ipfs.Swarm().Connect(ctx, peerInfo); err != nil {\n\t\treturn fmt.Errorf(\"could not connect to migration peer %q: %s\", peerInfo.ID, err)\n\t}\n\tfmt.Printf(\"connected to migration peer %q\\n\", peerInfo)\n\n\tif pin {\n\t\tpinAPI := ipfs.Pin()","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/ipfs/kubo/blob/329838acdfafae224582930457efe80aa217afc0/cmd/ipfs/kubo/add_migrations.go#L87-L123","documentation":"addMigrationPaths is given the list of paths the ipfs fetcher downloaded. If that list is empty there is nothing to add to the temporary migration node, so it fails early rather than proceeding with an empty migration.","triggerScenarios":"addMigrations used the `ipfs fetch`-style fetcher, but the download step produced no file paths (fetch command failed silently, wrote to an unexpected location, or matched no files).","commonSituations":"Network failure or partial download during `ipfs fetch` of migration binaries; disk full or permission errors dropping the artifact; a mismatch between the fetched filename and the path glob used by addMigrations.","solutions":["Re-run the daemon with --migrate so the fetch retries and check its output for download errors","Verify network access to dist.ipfs.tech (or the configured download host) and any proxy settings","Check disk space and write permissions in the temp dir used for fetched migrations","Run migrations manually: download the matching fs-repo-migrations release and run `ipfs repo migrate`"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Ensure network reachability to the migration download host before starting the daemon","Check disk space in the temp download dir","Prefer running `ipfs repo migrate` manually in flaky-network environments"],"tags":["migrations","download","daemon"],"backgroundTag":"migration-download-empty","analyzedSha":"329838acdfafae224582930457efe80aa217afc0","analyzedAt":"2026-09-03T18:30:52.135Z","contentChangedAt":"2026-09-03T18:30:52.135Z","schemaVersion":2},"datasetVersion":"2026-09-11T00:17:11.886Z"}