﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	launchpad_bug
17	upload needs to be tolerant of lost peers	warner	warner	"When we upload a file, we can tolerate not having enough peers (or those peers not offering enough space), based upon a threshold named ""shares_of_happiness"". We want to place 100 shares by default, and as long as we can find homes for at least 75 of them, we're happy.

But in the current [source:src/allmydata/encode.py], if any of those peers go away while we're uploading, the entire upload fails. (worse yet, the failure is not reported properly.. there are a lot of unhandled errback in Deferreds in there).

encode.Encoder._encoded_segment needs to be changed to count failures rather than allowing them to kill off the whole segment (and thus the whole file). When the encode/upload process finishes, it needs to return both the roothash and a count of how many shares were successfully placed, so that the enclosing upload.py code can decide whether it's done or whether it needs to try again.

At the moment, since we're bouncing storage nodes every hour to deal with the silent-lost connection issues, any upload that is in progress at :10 or :20 or :30 is going to fail in this fashion.
"	defect	closed	major	0.9.0 (Allmydata 3.0 final)	code-encoding	0.7.0	fixed			
