ipfs / js-ipfs

IPFS implementation in JavaScript
https://js.ipfs.tech
Other
7.44k stars 1.25k forks source link

Recursively adding directory responds with "The user aborted a request." #4149

Closed kstuart closed 1 year ago

kstuart commented 2 years ago

Version js-ipfs version: 0.15.2-0078aad85f92d7bc8e3a22eb9ef8efd257b439b5 interface-ipfs-core version: ^0.155.0 ipfs-http-client version: 1.0.0 Repo version: 12 System version: x64/linux Node.js version: v16.4.2 Commit: 0078aad85f92d7bc8e3a22eb9ef8efd257b439b5

jsipfs run in daemon offline mode

Platform Linux ded1e4d73ca7 5.18.5-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 16 Jun 2022 20:40:45 +0000 x86_64 Linux

Steps to reproduce

Note: The steps to reproduce look a bit odd as they're extracted from a larger test, they require the Bash shell.

TIME=1655158632

setup_directory() {
  local TESTDIR=$(mktemp -d -p mountdir "${1}XXXXXX")
  mkdir -p "$TESTDIR"/{dir1,dir2/sub1/sub2,dir3}

  touch -md @$(($TIME+10)) $TESTDIR/dir2/sub1/sub2/file3
  ln -s ../sub2/file3 $TESTDIR/dir2/sub1/link1
  touch -h -md @$(($TIME+20)) $TESTDIR/dir2/sub1/link1

  touch -md @$(($TIME+30)) $TESTDIR/dir2/sub1/sub2
  touch -md @$(($TIME+40)) $TESTDIR/dir2/sub1
  touch -md @$(($TIME+50)) $TESTDIR/dir2

  touch -md @$(($TIME+60)) $TESTDIR/dir3/file2
  touch -md @$(($TIME+70)) $TESTDIR/dir3

  touch -md @$(($TIME+80)) $TESTDIR/file1  
  touch -md @$(($TIME+90)) $TESTDIR/dir1
  touch -md @$TIME $TESTDIR

  echo "$TESTDIR"
}

mkdir mountdir
TESTDIR=$(setup_directory)

jsipfs add -r $TESTDIR
The user aborted a request.
tree $TESTDIR
mountdir/ukZ4MN
├── dir1
├── dir2
│   └── sub1
│       ├── link1 -> ../sub2/file3
│       └── sub2
│           └── file3
├── dir3
│   └── file2
└── file1

Expected

The recursive add to complete successfully, for comparison go-ipfs outputs:

ipfs add -r $TESTDIR
added Qmf13KNurvAHUfMBhMWvZuftmUikhhGY7ohWVaBDDndFMz ukZ4MN/dir2/sub1/link1
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH ukZ4MN/dir2/sub1/sub2/file3
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH ukZ4MN/dir3/file2
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH ukZ4MN/file1
added QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn ukZ4MN/dir1
added QmX61y5df2RwN9m7kckJVs9t2UEpaoKAF85oZYaZ9aDqAB ukZ4MN/dir2/sub1/sub2
added QmZ1r45xLughp9zwvZtJCjHprdbm7VwvJBDPAJouzfNp8i ukZ4MN/dir2/sub1
added QmbH5rj4c3CVmPSs67yH2hSH1anmSXErtfBvueBtgH7niR ukZ4MN/dir2
added QmVpg5vsg5MigsYA6XZYxNPEBLvTv2hBxFVyq479hqdoCS ukZ4MN/dir3
added QmPtx9BGiqweqsqguBSAxsh9bNBAKEpdYfkGMhAuxBPdEz ukZ4MN
SgtPooki commented 1 year ago

js-ipfs is being deprecated in favor of Helia. You can https://github.com/ipfs/js-ipfs/issues/4336 and read the migration guide.

Please feel to reopen with any comments by 2023-06-02. We will do a final pass on reopened issues afterward (see https://github.com/ipfs/js-ipfs/issues/4336).

This issue is most likely resolved in Helia, please try it out!