Author: toad
Date: 2008-04-03 15:36:38 +0000 (Thu, 03 Apr 2008)
New Revision: 18960
Modified:
trunk/freenet/src/freenet/node/Version.java
Log:
1132:
Client layer:
- Fix a critical bug in the cooldown queue: We must store both the key and the
client, otherwise when we remove the key for one client we may also remove it
for another client which had the same cooldown deadline. This actually happens
for splitfiles, so once we'd tried a block 3 times we would never try it again.
- Another major fix: we weren't calling setParentGrabArray(null) in the
few-requests path in RGA.removeRandom(). This was causing us to not reregister,
and therefore lose blocks.
- Refactor slightly in FetcherSegment.onSuccess(): allocate the new subsegment
earlier on, use it for the cooldown queue.
- Code simplifications/minor refactoring.
- More consistent fetched blocks count (never report a block success after
we've started decoding).
- Prevent a temporary space leak.
- Prevent healing inserts for successfully fetched blocks.
- Fix losing blocks when changing priority for a request some of whose blocks
are on the cooldown queue. We didn't reset the deadlines, so after a failure
that block wouldn't be rescheduled, frequently causing the loss of the
subsegment...
- Cooldown queue: don't continue forward when searching for a key to start,
continue only to end.
- Cooldown queue: enforce MIN_SIZE when expanding the queue.
- Split RGAItem.isCancelled() into RGAItem.isEmpty() (should it be removed, no
blocks??), and SendableGet.isCancelled() (is it actually cancelled/finished
i.e. should we complain if we try to send a request on it?).
- Synchronization changes to avoid deadlock given that SubSegment locks on
Segment: SendableGet doesn't need to synchronize when checking for
cancellation. Explain locking in SendableRequest: sync(this) must always be
last since subclasses may do wierd things.
- Synchronization: hold the clientGrabber lock while doing the rest of the
registration. We do this when fetching so it is safe. It prevents a race
condition resulting in blocks being removed right after they are added.
- Synchronization: CRS: hold (this) while accessing allRequestsByClientRequest
in removeRandom().
- Possibly fix a 2G limit caused by multiplying in the wrong order in
SplitFileFetcher.
IP detection:
- Set lastAddressList to null when we have no addresses so we redetect next
time.
- Pick up a changed IP address more quickly.
Bookmarks:
- Update FMS and french index edition.
L10n:
- German update.
HTML filter:
- Don't return null from toString() when deleting a tag. We don't check for it,
so it might cause NPEs.
Config:
- Keep persistent temp dir however the user specified it (e.g. as a relative
path).
Misc:
- Some minor synchronization fixes (make stuff volatile).
- Fields.binarySearch() (only used by cooldown queue atm, so this is unlikely
to matter as it never gets that big): better way to find the middle, avoids
integer overflow, accurate searches up to integer.max_value size rather than
half that.
- Possibly fix a 2G limit caused by multiplying in the wrong order in
BaseFileBucket.split().
Dev stuff:
- Logging.
- Indenting.
- Comments.
- Prevent NetworkIDManager.equals() ClassCastException.
- Delete some dead code.
- Make some inner classes static final.
Installer:
- Re-add the preferences panel to the firefox profile.
- Update.sh:
-- Fix a bashism.
-- Download the jars to a temporary directory. If they are different to the
current jars, shutdown the node, replace the jar(s), and restart. This is
necessary because replacing the jars before restarting might break the restart
process, as recently reported on #freenet.
-- The comparison code wasn't always working, fixed some bugs e.g. in the md5
path.
Website:
- German translation of the download page.
Plugins:
- Minor (should not cause deadlocks) synchronization fixes.
dbkr
NEOatNHNG
nextgens
toad
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-04-03 15:07:07 UTC (rev
18959)
+++ trunk/freenet/src/freenet/node/Version.java 2008-04-03 15:36:38 UTC (rev
18960)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1131;
+ private static final int buildNumber = 1132;
/** Oldest build of Fred we will talk to */
- private static final int oldLastGoodBuild = 1130;
- private static final int newLastGoodBuild = 1131;
+ private static final int oldLastGoodBuild = 1131;
+ private static final int newLastGoodBuild = 1132;
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.APRIL, 3, 0, 0, 0 );
+ _cal.set( 2008, Calendar.APRIL, 5, 0, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}