Actually, given the stability and slowdown problems, which lead to dropped connections with network events aren't serviced fast enough because it's gone creating dozens of threads that take CPU priority over the event handling thread for some insane reason, maybe a useful idea would be to have reserve connections. These would be reserved spaces on ultrapeers, but without anything much actually happening in the way of traffic; they wouldn't be used to route searches for instance. Like the upload queues, they'd be the next in line, but leaves would have them too -- one at least, and maybe a full four, ready to go live the moment an existing connection dropped. Thing is I'm sick of seeing at least one red bar most of the time on my connection meter. It's not just that it drops connections frequently; it's also slow to reestablish them. (It was slow in 3.8.10; it was really slow in 4.0.2 with locale preferencing, until I turned that off; now it's merely slow again.) If it held one in reserve to switch in as active at a moment's notice it could recover nearly instantly from just one dropped connection. Unlike an active connection to an ultrapeer, a reserve connection would not need to consume much in the way of bandwidth or resources at either end prior to becoming active.
Basically, the idea is to do the work of finding a replacement connection for one that fails *before* it fails, rather than after, but sit on this information until there is at least one new connection needed and use it only then. A form of precomputing in order to optimize recovery from network hiccups.
I suppose that still wouldn't help with search results being poor if a connection or two bomb right after you start a search, which is all too common, leading me to suspect the existence of "fair weather friend" ultrapeers that are quite happy to route searches your way but drop you like a hot potato the minute you send off so much as 1 query yourself... Anything that supports uploading as somehow "better" than downloading hurts the network, since equal amounts of uploads and downloads is what will actually happen barring some kind of multicasting extension, and that means making it a pain to download reduces uploading in equal measure anyway. |