millette / dat-shell

Dat shell. Open a remote dat and explore with cd, ls, etc.
https://dat-shell-millette.hashbase.io/
Other
62 stars 13 forks source link

Error: Dat not ready. #17

Open nicolas-f opened 6 years ago

nicolas-f commented 6 years ago

I have the following error message:

Error: Dat not ready.

What does that mean ? How to fix this issue. I have also the following error spawning randomly:

Error: Dat not ready.
    at Promise (/usr/lib/node_modules/dat-shell/index.js:119:79)
    at new Promise (<anonymous>)
    at Object.ls (/usr/lib/node_modules/dat-shell/index.js:118:21)
    at REPLServer.eval (/usr/lib/node_modules/dat-shell/index.js:257:37)
    at bound (domain.js:301:14)
    at REPLServer.runBound [as eval] (domain.js:314:12)
    at REPLServer.onLine (repl.js:468:10)
    at emitOne (events.js:116:13)
    at REPLServer.emit (events.js:211:7)
    at REPLServer.Interface._onLine (readline.js:282:10)
dat-shell / $ (node:30946) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Timeout.
(node:30946) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

node v8.9.4 dat-shell v0.5.0

Thanks

millette commented 6 years ago

How do you launch dat-shell?

Can you try these:

dat-shell dat://ae8c136e04a66451c79325681d4593bc3ce30c8005dfa5fc6001e0898ec4573a/
dat-shell dat://dat-shell-millette.hashbase.io

Both should open the same content.

Perhaps the dat is unreachable?

nicolas-f commented 6 years ago

I've updated to node v9.3.0 and now the demo data is working as expected. (it displayed my local root ls before)

However I have the same issue with my dat:


Error: Dat not ready.
    at Promise (/home/ipfsnode/.nvm/versions/node/v9.3.0/lib/node_modules/dat-shell/index.js:119:79)
    at new Promise (<anonymous>)
    at Object.ls (/home/ipfsnode/.nvm/versions/node/v9.3.0/lib/node_modules/dat-shell/index.js:118:21)
    at REPLServer.eval (/home/ipfsnode/.nvm/versions/node/v9.3.0/lib/node_modules/dat-shell/index.js:257:37)
    at bound (domain.js:370:14)
    at REPLServer.runBound [as eval] (domain.js:383:12)
    at REPLServer.onLine (repl.js:493:10)
    at REPLServer.emit (events.js:159:13)
    at REPLServer.Interface._onLine (readline.js:287:10)
    at REPLServer.Interface._line (readline.js:642:8)

The dat is reachable because "dat log dat://..." is working

...

Log synced with network

Archive has 32816 changes (puts: +20, dels: -0)
Current Size: 0 B
Total Size:
- Metadata 542 MB
- Content 0 B
Blocks:
- Metadata 32817
- Content 0

Maybe the dat is too big for dat-shell

millette commented 6 years ago

It's working fine with node 8.9.x for me. Can you share the dat you're testing with? robin@millette.info if you want to keep it private.

millette commented 6 years ago

It could be that dat-shell is timing out too early. But otherwise, size shouldn't matter, since dat-shell doesn't download actual content, only meta-data.

millette commented 6 years ago

Testing now with a 10-minute timeout to see what happens with a large dat. Bad news is the process is taking 100% cpu and has been for a few minutes, and the cli is frozen.

I'm going to make error handling a lot more sturdy and will try to come up with a solution in the next few days.

anarcat commented 6 years ago

i've had a similar experience when running just dat-shell without argument:

$ dat-shell 
dat-shell v0.6.0
Dat shell. Open a remote dat and explore with cd, ls, etc.

cwd: /
Available commands:
.help: Internal repl commands.
help: List of commands and their descriptions.
ln: Pseudo symbolic link (mkfifo).
cp: Copy a file from remote dat to local filesystem.
cat: View a file (concatenate).
ls: List files.
file: Detect mimetype.
view: Generic view command (text, markdown, html, etc.).
sl: Train yourself to avoid typos.
cd: Change directory.
pwd: Output current working directory.
dat: dat -c to close; dat <KEY> to open; dat to output current key.
state: Output current state.
version: Current dat-shell version.
quit: Exit dat-shell (or CTRL-D).
exit: Exit dat-shell (or CTRL-D).
dat-shell / $ ls ff8e8993826467c3e1a9a91bc8c598a631fa54a40ab6a487c0cb48e505f91924
Error: Dat not ready.
    at Promise (/usr/local/lib/node_modules/dat-shell/index.js:114:79)
    at new Promise (<anonymous>)
    at Object.ls (/usr/local/lib/node_modules/dat-shell/index.js:113:21)
    at REPLServer.eval (/usr/local/lib/node_modules/dat-shell/index.js:258:37)
    at bound (domain.js:301:14)
    at REPLServer.runBound [as eval] (domain.js:314:12)
    at REPLServer.onLine (repl.js:468:10)
    at emitOne (events.js:116:13)
    at REPLServer.emit (events.js:211:7)
    at REPLServer.Interface._onLine (readline.js:280:10)

I naively thought ls could take a dat address directly without having first to "connect" to a blob...