SO: Arch Linux e MacOS
~ % ipfs version
ipfs version 0.4.10
~ % ipfs init
initializing IPFS node at /Users/user/.ipfs
generating 2048-bit RSA keypair...done
peer identity: Qme3fGyQWP4mf3J9Ln3EjofWyYhiGgVCZZ41jgVA9o78u7
to get started, enter:
ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readme
~ % ipfs daemon
Initializing daemon...
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.0.102/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
Vamos tentar adicionar um vídeo:
ipfs add raw_video.mkv
added Qmf6vier2j9rtG7hjA8Bf8ohzT5VYNmGfRntSc4zXsQyPL raw_video.mkv
Cerca de 15 a 20 segundos depois, o ipfs travará:
https://gist.github.com/Netherdrake/4da51b24da82fe25ae476cffeb09cc31
Esse problema é intermitente - às vezes a adição será bem-sucedida e posso acessar os arquivos em localhost:8080/ipfs/HASH/raw_video.mkv
sem problemas, mas na maioria das vezes, o daemon falha.
Você pode redirecionar por ipfs daemon 2>stderr.log
Também não consigo reproduzi-lo, tentei cerca de 10x60MiB de arquivos.
Acontece que o ipfs irá travar ao adicionar qualquer arquivo grande.
Por exemplo, ISO oficial do Ubuntu.
No MacOS ele trava:
ipfs add ubuntu-16.04.2-desktop-amd64.iso
488.00 MB / 1.45 GB [=============================>------------------------------------------------------------] 32.92% 20s17:54:27.509 ERROR commands/h: unexpected EOF client.go:247
Error: unexpected EOF
No Linux, ocorre um erro, mas o processo daemon parece continuar em execução:
~/Downloads % ipfs add ubuntu-16.04.2-desktop-amd64.iso
32.00 MB / 1.45 GB [=>----------------------------------------------------------------------------] 2.16% 30s17:53:01.534 ERROR commands/h: open /home/user/.ipfs/blocks/SF/put-579906520: too many open files client.go:247
Error: open /home/user/.ipfs/blocks/SF/put-579906520: too many open files
% ipfs daemon
Initializing daemon...
Adjusting current ulimit to 2048...
Successfully raised file descriptor limit to 2048.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/172.17.0.1/tcp/4001
Swarm listening on /ip4/172.18.0.1/tcp/4001
Swarm listening on /ip4/172.19.0.1/tcp/4001
Swarm listening on /ip4/172.20.0.1/tcp/4001
Swarm listening on /ip4/172.21.0.1/tcp/4001
Swarm listening on /ip4/172.22.0.1/tcp/4001
Swarm listening on /ip4/172.23.0.1/tcp/4001
Swarm listening on /ip4/172.24.0.1/tcp/4001
Swarm listening on /ip4/192.168.1.107/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
17:53:01.534 ERROR commands/h: err: open /home/user/.ipfs/blocks/SF/put-579906520: too many open files handler.go:285
Eu tentei fazer o downgrade para versões anteriores, e a única versão que não trava é 0.4.6
:
~/Downloads % ipfs add ubuntu-16.04.2-desktop-amd64.iso
added QmTc9mzzoEChP2Wyc4uGWGkkifC99y8o4KmxwVyg18MP76 ubuntu-16.04.2-desktop-amd64.iso
~/Downloads % ipfs version
ipfs version 0.4.6
~/Downloads % pacman -Q go-ipfs
go-ipfs 0.4.6-1
Não consigo reproduzir isso no macOS 10.12.5 e no Ubuntu 16.04 usando o ipfs 0.4.10.
$ truncate -s 500M testfile
added QmV7q5aTmvZtGWja4wpodiUTEpBVWYFkQGRQ8PmJMDPG62 testfile
$
Sua compilação de ipfs foi da fonte, seu gerenciador de pacotes ou o binário da web? Talvez tente com um diretório ~/.ipfs
limpo para ver se o problema persiste.
Eles são todos de gerenciadores de pacotes. Cada saída nas mensagens acima começou com rm -rf ~/.ipfs && ipfs init
.
@Netherdrake se você executar seu daemon com a opção --routing=none
, ele ainda falha da mesma maneira?
Com --routing=none
funciona bem.
ok, então este é um caso de adicionar um arquivo fazendo com que o subsistema do provedor de DHTs se conecte a muitos pares. Se você remover o sinalizador --routing=none
e usar ipfs add --local
coisas também devem funcionar bem.
Estou trabalhando em uma correção para isso, esperamos ter algo na próxima versão.
Ah, também percebo que esse problema está no repositório errado. No futuro, use ipfs/go-ipfs para relatar problemas como este.
Comentários muito úteis
ok, então este é um caso de adicionar um arquivo fazendo com que o subsistema do provedor de DHTs se conecte a muitos pares. Se você remover o sinalizador
--routing=none
e usaripfs add --local
coisas também devem funcionar bem.Estou trabalhando em uma correção para isso, esperamos ter algo na próxima versão.