Freenet 0.7.5 build 1358 is now available. It will be mandatory on Monday, so 
please upgrade ASAP; let me know if the auto-update has any problems. This 
build includes a huge number of bug fixes, mostly to low level code, most of 
which is the result of debugging on the new testnet - so thanks to all who have 
run testnet nodes! Most of the fixes are aimed at preventing timeouts of 
various kinds. This should improve performance, particularly by avoiding bogus 
fatal timeouts, hopefully greatly reducing the number of fatal timeouts. The 
next build should disconnect/drop opennet peers (strangers) on seeing a fatal 
timeout. This is an essential requirement before we deploy new load management, 
which should be relatively soon. 

A major side issue is the "all my peers backoff when I browse freesites" bug. 
This may or may not have been fixed. I have tried it out on testnet, which has 
all the new code, and it still seems that most realtime transfers (i.e. for 
fproxy) fail, but it looks like this is largely due to packet loss so it might 
just be my connection. Once 1358 is mandatory, or at least widespread (give it 
a couple of days), I will need feedback on whether we still see mass backoff 
and low realtime transfer success rates when browsing freesites. So please get 
me that information if you can, thanks!

Also, if you have any problems, please let me know; bug reports are always 
helpful. You can contact me via email, IRC, FMS or Freetalk.

Immediately user visible: (at least for some users)
- Warn the user about clock skew, and partially compensate for it: If your 
clock regularly gets rewound (goes backwards), this can cause big problems for 
Freenet. Please avoid this by installing ntpd and turning off any system 
timekeeping that involves sudden jumps.
- Show an error message when the user tries to insert a file without specifying 
the key type, or add a friend without specifying the trust level. Don't set a 
default in most cases.
- Tidy up the Upload a File page slightly.
- German translation update.
- Add ARM support to architecture detection.
- Improve statistics slightly (split CHK timings into bulk i.e. downloads vs 
realtime i.e. fproxy)
- A client layer fix for inserts on very small networks.
- Some minor fixes to the Windows and Java (Mac/Linux) installers, including 
the spaces in the filename bug.

Internal stuff that should make a big difference when it is deployed across the 
network, mostly focused on preventing bogus fatal timeouts:
- A timeout happens when we send a request to a peer, and don't get a response 
within the expected time. Or when we start a transfer of some data, and between 
one block and the next it takes much longer than expected so we give up on the 
transfer.
- After a normal timeout, we move on to the next node, but at the same time we 
wait for a longer period to see whether the expected response comes through 
anyway (this is called "two stage timeout"). If it doesn't, this is a fatal 
timeout. The problem is we don't know whether the request is running or not. 
Usually if there is a severe connectivity problem the node will have 
disconnected by this point. New load management requires we disconnect on a 
fatal timeout, if we can't resolve it. We currently disconnect on a fatal 
timeout from friends but not strangers; we will disconnect from strangers on a 
fatal timeout soon.
- Fix a nasty bug (race condition) causing us to miss messages sometimes when 
waiting for them in many different places.
- Various changes to congestion control code, which should amongst other things 
prevent prejudice against large messages (e.g. block transfers) causing 
timeouts.
- Fix message queueing problems including a bug causing long delays sometimes; 
this would result in timeouts. Fix related issues resulting in messages not 
being sent in the correct order (fairness between different transfers), mostly 
because of not checking whether we can send stuff until after we have pulled it 
off the queue.
- Improvements to TCP-like retransmit behaviour.
- Implement keepalive packets even on new packet format. Work around a bug in 
1356 where it would not send any messages and would then disconnect because it 
didn't see any acks. Disconnect more quickly after not seeing any acks.
- Lots of timeout fixes in inserts and requests (at the node level), including 
waiting for messages to be sent before waiting for the reply, priority issues, 
two-stage timeouts, various others.
- Decide whether to accept requests on a separate, dedicated thread, not on the 
one receiving the packets. This decision can involve disk access so can take 
unreasonable amounts of time if the computer is heavily loaded.
- Timeout infrastructure, we may eventually implement a probing mechanism if 
fatal timeouts continue to be an issue (doesn't actually change behaviour yet).
- Make requests use slightly fewer threads by running the get-offered-keys 
stage asynchronously. This happens when we have fetched a key before, and 
failed, and then a node tells us it has the key, and we fetch it.

Credits:

Juiceman
SebastianWeetabix
sweetie
toad
xor

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Support mailing list
Support@freenetproject.org
http://news.gmane.org/gmane.network.freenet.support
Unsubscribe at http://emu.freenetproject.org/cgi-bin/mailman/listinfo/support
Or mailto:support-requ...@freenetproject.org?subject=unsubscribe

Reply via email to