by old_death » 29 Sep 2010 01:32
I don't think you got the point: let's say you are sharing a movie with some 100 MB of data. Now while you are sharing it, lots of people decide that they want to have the file, too and they start requesting parts of the file from you. Now you've uploaded 99,5% of the file to these users (which means that there are 0,5% of the file that none on the network besides you got on his PC) and decide to unshare the file, so these 0,5% (or whatever percentage hasn't been uploaded) will never be downloaded by anyone.
Now eDonkey lacks a way of telling whether there is a complete copy of the file. This means that others could still find that file even though it is not available as a complete copy and start downloading it. And then you get at a point where there are suddenly 100 people trying to download that file - however, most they can ever get is 99,5% of it, so that download will never finish.
As for the repeated redownloading of some chunk(s), there is a simple explanation for that, too: Shareaza uses very sophisticated ways of checking that the data it downloads from others is valid. However, not every client has these methods in the same way we do. So just imagine there is one client among those you download from that has a piece of data you don't have, however that piece of data is corrupt, but hasn't been validated correctly so the client assumes it to be OK. Now when this client uploads a part of the corrupted data (in fact, it only needs to upload 1 single corrupted bit) to you, Shareaza needs to redownload the entire chunk, and there is no way to prevent this, as Shareaza cannot tell whether a specific bit is OK or not, it can only validate the complete chunk. (If we wanted to check every single bit of a download while transferring it, we would need to download the the file two times, and this would multiply the amount of time it takes to download a file by 4.)