Author: toad
Date: 2008-03-25 14:14:14 +0000 (Tue, 25 Mar 2008)
New Revision: 18780

Modified:
   trunk/freenet/src/freenet/node/Version.java
Log:
1127:
Transport layer:
- If it takes more than 2 minutes to get an ack for a packet, log an error.
- Call disconnected() on AsyncMessageCallback's when we have to dump them 
because of a connection restart or a disconnection.
- If we have no response from a previous KeyTracker for 60 seconds, despite 
continuing to send resend requests and ack requests, assume it's gone and dump 
the tracker. This was a major cause of hanging PacketThrottle's for me, most 
likely caused by forceDisconnect() when rekeying didn't complete in time.
Local requests coalescing:
- Don't send a GetOfferedKey if a request is running for the same node.
- Don't send a regular request if a request is running for the same node.
- Expose an interface (KeysFetchingLocally) from RequestStarter for all keys 
for which we are currently running requests.
- Pass it into chooseKey().
- Add hasValidKeys(KeysFetchingLocally) to SendableGet.
- New class BaseSendableGet (parent of SendableGet, child of SendableRequest) 
includes getNodeKey(), default impl in SendableGet; OfferedKeysList extends 
BaseSendableGet but not SendableGet. Also hasValidKeys(KFL).
- RandomGrabArray.removeRandom() -> 
removeRandom(RandomGrabArrayItemExclusionList). The latter is an interface for 
excluding specific RGAItem's at selection time. RequestStarter also implements 
this.
- Where we have to select a random block ([Sectored]RandomGrabArray, 
SubSegment) we loop from 0 to 10 trying random blocks and log an error and 
return null if we can't find one in that time.
- However, we have hardcoded shortcuts for 1 and sometimes 2 array sizes.
Client layer:
- SplitFileFetcherSubSegment: Always synchronize on the segment.
- SplitFileFetcherSegment and SubSegment: Simplify locking and locking related 
logic. Lock in places where we should lock but couldn't before the previous 
change.
- SubSegment: Check for null key in a few places.
- SectoredRGA: Remove RGA only if it isEmpty(), not when it returns null too 
(just as comments say). This probably has no impact beyond being necessary for 
coalescing.
Bookmarks:
- Update FAI.
L10n:
- Update German translation (tommy).
- Update French translation (batosai).
Requests:
- Local SSK requests: check for a collision at the beginning, store at the end. 
This prevents us sending out offers for the key we are inserting until after 
the insert has completed.
- SSK requests: fix NPE: wait for headers + pubkey before finishing (in the 
SSKDataFoundData handler).
Cooldown queue:
- Don't requeue after cooldown until the deadline has passed. Fixes a nasty bug 
which happens when we have several requestors for the same key enter cooldown. 
We would end up doing a ridiculous number of tries for that key, incrementing 
on each cooldown cycle.
ULPRs:
- OfferedKeysList: avoid shuffling penalty by swapping with the end when we 
remove a key randomly.
- OfferedKeysList: synchronization.
- OfferedKeysList: add some assertions.
Opennet:
- No point rejecting the ref and logging if we've lost the connection.
Packet throttle:
- Once we send a packet, do notifyAll() and go around all the waiters again. 
Otherwise the next packet may miss its slot.
- Synchronization.
Stats:
- Don't doublecount SSK payload.
- Don't report output bytes if 0.
- Detect when alreadySentBytes > buf.length in MessageItem. Hopefully this will 
happen early on so we'll be able to trace the cause.
- Fix bogus alreadySentBytes in n2n file transfer.
- Use data.length rather than 1024 (no effect).
- Use buf.length not prb.blockSize (a few bytes overreported at the end of a 
bulk send).
- Count n2n file transfers.
Bandwidth limits:
- Sanity check, check for negative ibwLimit other than -1.
Dev stuff:
- Logging.
- toString().
- Comments.
- Imports.
- Indenting.
- NPE paranoia.
- Check for ctr == null in block transfer code.

Installer: (nextgens)
- Hopefully fix the Ubuntu "'_install_toSource.sh file not found" bug.
- Tell fproxy to enable persistent connections for HTTP on the assumption users 
will use the firefox profile we create.
- Fix the cleanup script.

Contrib: (nextgens)
- Remove some empty directories.

Verification scripts: (nextgens)
- Indicate whether the precompilation stage failed, rather than just failing 
silently.

batosai
freespace
nextgens
toad
tommy

perlFreenet: (alexlehm)
- handle connection errors and keys containing . better.
- improve README and comments.

Thingamablog: (dieppe)
- Edition number is an int everywhere, fixes a bug causing it to only work for 
0...9, add a field for it in the FCP panel.

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-03-25 13:39:54 UTC (rev 
18779)
+++ trunk/freenet/src/freenet/node/Version.java 2008-03-25 14:14:14 UTC (rev 
18780)
@@ -24,17 +24,17 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 1126;
+       private static final int buildNumber = 1127;

        /** Oldest build of Fred we will talk to */
-       private static final int oldLastGoodBuild = 1124;
-       private static final int newLastGoodBuild = 1126;
+       private static final int oldLastGoodBuild = 1126;
+       private static final int newLastGoodBuild = 1127;
        static final long transitionTime;

        static {
                final Calendar _cal = 
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
                // year, month - 1 (or constant), day, hour, minute, second
-               _cal.set( 2008, Calendar.MARCH, 22, 0, 0, 0 );
+               _cal.set( 2008, Calendar.MARCH, 27, 0, 0, 0 );
                transitionTime = _cal.getTimeInMillis();
        }



Reply via email to