zlatinb / muwire

MuWire file sharing client for I2P
GNU General Public License v3.0
191 stars 27 forks source link

Downloading files cause Failed or Hopeless status always #121

Closed slrslr closed 2 years ago

slrslr commented 2 years ago

In 0.8.11 I was searching random phrases on Search tab and tried to download files from around 10 users and the file download always shows as Connecting and Failed and then Hopeless. It does not seem likely it 100% times fail. It does not seem there is built-in log that can tell me the detail about the failure. Uploading to others works. I have also tried to download from user to whom i am currently uploading, with same result.

I am on Linux, built MW 0.8.11 from git, openjdk 11.0.14

UPDATE: per this comment it seems to be caused my moving ~/.MuWire directory to different computer with different Linux user.

zlatinb commented 2 years ago

What external router are you using? The i2p network is currently experiencing problems but a new version is due tomorrow.

I'm on my phone right now but as soon as I'm back home I'll tell you how to enable logging.

zlatinb commented 2 years ago

To enable the necessary logging, look inside the logging directory in the source tree. Copy the file 1_logging.properties as logging.properties in the directory from which you launch MuWire. Add the following line at the end of the file:

com.muwire.core.download.level=FINE

Then start MuWire and try a download. If you did everything right, a file called MuWire.log should appear in the same directory.

Also, can you try downloading something from me? That way I can see how it looks on the uploader side.

slrslr commented 2 years ago

I have tried to enable the logging as you have mentioned. Restart MW, and after start immediately checked Downloads, all tried connecting and failed (yes, i have tried to download file from you), so i quit after like a minute of runtime. Yet unable to find yours mentioned .log file, see this output

$ i2pd --version i2pd version 2.36.0 (0.9.49) Boost version 1.74.0

i2pd webconsole Uptime: 1 days, 22 hours Network status: OK Tunnel creation success rate: 60% Received: 2.10 GiB (9.46 KiB/s) Sent: 5.26 GiB (11.33 KiB/s)

MuWire status: connections incoming 38, outgoing 27. Uploads works. (stats shown from the long session before i have just now reboot to attempt logging) restarting i2pd not helped

Checking /var/log/I2pd/i2pd.log, shows some errors (pass: mw) maybe I2Pd issue, i will try later..

zlatinb commented 2 years ago

Regarding i2pd, I don't think those errors are related but you should definitely upgrade to 2.41.0 which came out just a few hours ago.

Regarding the log file, the logging.properties file needs to be in $PWD. The following should work:

./gradlew clean assemble
mkdir tmp
cp gui/build/distributions/MuWire-0.8.11.zip tmp
cp logging.properties tmp
cd tmp
unzip MuWire-0.8.11.zip
MuWire-0.8.11/bin/MuWire

and then MuWire.log should be inside tmp.

zlatinb commented 2 years ago

Also check if you have enough disk space on the partition where your MuWire Incompletes directory is mounted. Try cancelling all downloads and deleting everything inside that directory.

slrslr commented 2 years ago

It downloads again, but seen some issues you may want to check:

So i have installed i2pd 2.41.0

cd /tmp;wget https://github.com/PurpleI2P/i2pd/releases/download/2.41.0/i2pd_2.41.0-1bullseye1_amd64.deb && sudo dpkg -i i2pd_2.41.0-1bullseye1_amd64.deb && sudo apt install -f;whereis i2pd;systemctl restart i2pd
# ( If upgrading existing i2pd, then i have copied my configuration and compared merged only important lines like this: sudo cp -p /etc/i2pd/i2pd.conf /etc/i2pd/i2pd.conf_deb_version_working && sudo meld /etc/i2pd/i2pd.conf /etc/i2pd/i2pd.conf_deb_version_working && systemctl restart i2pd)

ran Your commands, last one also warns:

WARNING: package com.apple.laf not in java.desktop
WARNING: package com.sun.java.swing.plaf.windows not in java.desktop

MW 0.8.11 is running and all queued downloads fails. Muwire status window shows incoming/outgoing connections, some known and some hopeless peers

After maybe minute when all downloads failed and also common Search tab query "pdf" returned no results (it seems it needs some time or maybe even wait until library checksum finish) i quit MW and see the log file contains:

WARNING java_util_logging_Logger$log$7 call Exception while downloading 
java.nio.file.NoSuchFileException /home/myoldnonexistingusername/Downloads/Incomplete/*/*.part

full log

so this is caused by myself where i have copied muwire git folder from previous different Linux distribution where i had different Linux username and this username is somehow preserved somewhere, but in muwire git folder does not seem to be in any config file: Found only in:

./.git/logs/HEAD
./.git/logs/refs/heads/master
./.git/logs/refs/remotes/origin/master
./.git/logs/refs/remotes/origin/HEAD
./tmpp/MuWire-0.8.7/lib/guava-24.0-jre.jar
./tmpp/MuWire-0.8.7/lib/jsr305-3.0.2.jar
./tmp/MuWire-0.8.11/lib/guava-24.0-jre.jar
./tmp/MuWire-0.8.11/lib/jsr305-3.0.2.jar
./tmp/MuWire.log
./gui/build/distributions/gui-shadow-0.8.11.tar
./gui/build/distributions/MuWire-0.8.11.tar
./gui/build/libs/gui-0.8.11-all.jar

then i have found it in ~/.MuWire contents:

~/.MuWire/i2p.properties:user.home=/home/olduser
~/.MuWire/i2p.properties:user.name=olduser
~/.MuWire/i2p.properties:user.dir=/home/olduser/muwire/unzipp...
~/.MuWire/MuWire.properties:downloadLocation=/home/olduser/Downloads
~/.MuWire/MuWire.properties:incompleteLocation=/home/olduser/Downloads/Incomplete/muwire

then i did replacement in the two config files: sed -i "s|/olduser|/newuser|g" ~/.MuWire/i2p.properties ~/.MuWire/MuWire.properties sed -i "s|=olduser|=newuser|g" ~/.MuWire/i2p.properties ~/.MuWire/MuWire.properties

starting MW, still download fails. So i have updated from git, enabled logging again using your commands. And after start one download finished and newly files i have added to download queue from now on downloads. Old one like this file from you: MuWire-0.8.11.AppImage fails (i right click and retry), even i see the Search tab finds this file shared by you. So i cancel it and re-queue (download again from Search tab) and it downloads!!... from the log it seems it is using old linux username in path. The log shows also some exception which i think is caused by mouse right click download queued file MuWire-0.8.11.AppImage and selecting to copy checksum.

I am thinking @zlatinb if MW can be somehow made not to use the username in its config files, instead like ~/abc/def or $HOME/abc/def ..? Sorry for long post.

zlatinb commented 2 years ago

Ok, this all makes sense now. It is working as intended but I need to update, or actually write instructions for moving MW to a different computer or user.

The absolute path of the incomplete file is stored in a file called downloads.json but it's encoded and not intended to be editable by the user. This is one of the problems which is preventing MW to run portably, see issue #2 . It would be a big change to make that work in a backwards compatible way, so I'm going to leave it for after version 1.0.0 (You can see the roadmap to 1.0.0 on the MW forum)

In the commit referenced above I fixed copying downloader hash to clipboard. Good catch! Unless there is anything else please close this issue.

slrslr commented 2 years ago

👍