Author: toad
Date: 2008-01-25 19:32:12 +0000 (Fri, 25 Jan 2008)
New Revision: 17298
Modified:
trunk/freenet/src/freenet/node/Version.java
Log:
1104: (mandatory 6PM tomorrow, sorry folk but we want an alpha out asap!)
Data transfer:
- Re-use some message filters to save memory.
- Drop any surplus messages for the transfer for 5 seconds after completion.
Requests:
- Decision on retry not to decrement is made the first time on the basis of the
incoming peer, after that on the basis of the next peer.
- Hung inserts: If our background transfer notification waiters don't fire, log
an error and end the hung insert anyway after 6 minutes (3x normal timeout).
- Backoff a node if we fail a sendSync().
Message layer: Make asynchronous filters work and not timeout (fixing e.g.
insert hangs), and fix lots of leaks.
- Actually use the double-check that we do that the filter hasn't been matched
before exiting addAsyncFilter(). This will have occasionally caused
addAsyncFilter() not to throw when the node had in fact disconnected, resulting
in hung inserts and possibly minor memory leaks.
- Add onDisconnected() and onRestarted() to AsyncMessageFilterCallback. Use
these to not hang waiting for a transfer complete notice when the node we are
waiting for disconnects.
- Fix failure to timeout old filters, caused by matched filters being on the
filter list. This caused hung inserts waiting for transfer completion
notifications, and probably other problems (it wouldn't impact on synchronous
waits though, except in making a memory leak of them).
- If a matched filter is on the filter list, in removeTimedOutFilters(), report
an ERROR, and remove it.
- Don't let asynchronous filters stay matched() after they fire. Clear it just
as we clear it for synchronous filters, before calling the client callback. Log
an error and clearMatched() if matched() filters are fed to waitFor() or
addAsyncFilter().
- Synchronization fixes.
- clearMatched() clears matched on _or's as well as the main bit. Otherwise, we
can't re-use filters with or()s. I don't think this affects any actual code at
least prior to this build.
- If waitFor() times out, remove the filter explicitly. We can't rely on
removeTimedOutFilters() being run before it is re-added, so it may end up in
the queue twice (or more than twice), wasting memory and CPU and (prior to this
build) blocking timeout of async filters. In removeTimedOutFilters(), allow an
extra millisecond for this to take place.
- Always check all the filters in the queue in removeTimedOutFilters(). Avoids
bugs, simplifies code, and deals properly with asynchronous filter callbacks
with nontrivial shouldTimeout() - previously they wouldn't be matched until
around the original timeout even if they did return true.
Client layer:
- Fix order of callbacks to fix error: ... but success?!
Differential noderefs:
- Send differential noderefs including the bits that we miss in setup to all
peers including seed servers/seed clients.
Bookmarks:
- Update Another Index, french index, bombe editions.
- Add Zothar's flog to the dev blogs section.
- Reorder the indexes, change some descriptions.
Updater:
- Don't tell the user we are downloading the current version.
L10n/strings:
- "Your node" -> "Freenet" in 2 announcement strings, don't mention opennet as
there's a big explanation above it anyway.
- Explain in the announcement alert that Freenet may be slow to begin with.
- Partial dutch translation from ljn1981.
Dev stuff:
- Logging.
- Comments.
- Trivial refactoring.
- Set the danish translation file to UTF-8 for eclipse.
- Fix some datastore NPEs that only show up at loglevel debug.
- Better MessageFilter.toString().
Plugins:
- Remove Librarian from the list of standard plugins.
Installer:
- Improve description/title of browser shortcut.
- Unix/Mac: Add restart and shutdown icons to the menu.
UPnP plugin:
- Daemonize various threads so it doesn't prevent shutdown.
MDNSDiscovery plugin:
- Make the receiver thread wake up once a second so that messages can be sent
(waiting for input holds the lock). This probably also fixes a shutdown hang
bug.
ljn1981
nextgens
toad
robert
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-01-25 19:29:32 UTC (rev
17297)
+++ trunk/freenet/src/freenet/node/Version.java 2008-01-25 19:32:12 UTC (rev
17298)
@@ -24,17 +24,17 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 1103;
+ private static final int buildNumber = 1104;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 1101;
- private static final int newLastGoodBuild = 1103;
+ private static final int newLastGoodBuild = 1104;
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.JANUARY, 25, 0, 0, 0 );
+ _cal.set( 2008, Calendar.JANUARY, 26, 18, 0, 0 );
transitionTime = _cal.getTimeInMillis();
}