Author: toad
Date: 2008-04-15 11:43:29 +0000 (Tue, 15 Apr 2008)
New Revision: 19348

Modified:
   trunk/freenet/src/freenet/node/Version.java
Log:
1140:
Web interface:
- Tell the user when a download or upload has completed with a useralert on the 
homepage (using RequestCompletionCallback). The list of completed requests 
persists across restarts, requests are removed when the user clicks Hide.
- Allow the user to hide the NAT warning unless there are ports which know to 
be NATed, or there is no UDP connectivity.
- Fix #2247: Cut and cancel -> bookmark "" does not exist
- Various fixes to the sky theme.
- Allow the browser to cache static data from themes etc. Still send no-cache 
for everything else.
- Stats page: fix bogus Success Rate when store/cache accesses = 0.
HTML filtering:
- Slightly more robust charset detection, maybe fix #2255.
L10n:
- Queue page (English): More consistent summary heading titles, all include the 
(count), all the same punctuation/case.
- French update from batosai.
- German update from NEOatNHNG.
FCP:
- Set haveLoadedPersistentRequests when load them. Now won't load them twice if 
FCP is enabled then disabled then enabled? From findbugs.
Bookmarks:
- Update editions.
- Make some variables final, with slight refactoring.
Opennet:
- Make the hide button actually work.
IP detection:
- Use the bindTo address and don't detect other IPs if it's a real internet 
address. This is normally used on multi-homed machines that need to only use 
Freenet on one interface.
Swapping:
- Locking fixes, avoid modifying a HashMap while iterating it in 
lostOrRestartedNode().
Plugins:
- Save plugins to .jar not .jar.url.
- Plugin versioning support by an optional interface.
Datastore: (BDBFS)
- Never return an incorrect key (CHK/pubkey) from fetch(), detect when it isn't 
the expected key and delete it. Don't delete it, put it into the store with its 
real key and minimum LRU.
- For corrupt keys found by fetch(), blank out the key in the .keys file, 
create a random key, and put it into the bottom of the LRU.
- When reconstructing and find a corrupt block, put it at the bottom of the LRU 
with a blank key, rather than adding to the free blocks list.
- Justification: The free blocks list is stored in RAM and lost on restart. We 
have to rescan for it, and it appears we get some data loss (at least in my 
store).
- Create a .keys file for CHK store and cache. This will enable faster 
reconstruction.
- Flush and close all files before crashing when need to reconstruct datastore.
- Reconstruct lazily: if there is a non-null key in the keys file, convert it 
with routingKeyFromFullKey(), and use it, without reconstructing the full 
block. Note that we do read the data at the moment, so the speedup isn't that 
great... but it minimises the code changes.
- Prevent integer overflow causing premature termination of reconstruct.
Temporary files etc:
- Don't re-define fileRestartCounter in FileBucket, it is present in superclass.
- Remove unused debugging code.
Misc:
- SimpleBinaryRunningAverage: use readFully(). I don't think we use this code, 
but it was clearly broken...
- Fix some places where we were multiplying int's to get a long, and might have 
hit overflow...
- Synchronization in TrivialRunningAverage.clone().
- Trivial optimisation in ClientPutComplexDirMessage (entrySet not keySet, 
avoids a lookup).
- WeakHashSet: extend AbstractSet, not Set, so we can get rid of some code.
- Better binarySearch (shorter).
- Packet length paranoia in JFK3/4 message handling.
OutOfMemory handling:
- Allocate an emergency pool of 8KB, drop it when we get an OOM. Call a 
predefined hook after doing that and GCing.
- BDBFS hook sync's all the RAF's.
- Node's hook deallocates cached pubkeys and halves the size of 
recentlyCompletedUIDs.
Dev stuff:
- Make SortedLongSet (used in the queue, never has an entry at Long.MAX_VALUE) 
support Long.MAX_VALUE by using a local implementation of binarySearch(), and 
update the unit test to reflect this.
- Javadocs.
- Comments.
- FIXMEs.
- Delete some dead code.
- Delete some pointless code (e.g. creating the same SFS twice).
- Delete some unnecessary debugging code.
- Delete some unnecessary variable stores that are then discarded.
- Trivial optimisations (e.g. BaseClientKey: don't repeatedly call 
getKeyType()).
- Make some variables, constants etc final, protected, or private.
- Make some methods private.
- Fix the timing test in PacketSender.
- Logging.
- Fix a possible NPE in logging.
- Make finalize() protected in BaseFileBucket, MultiReaderBucket.
- Imports.
- Indenting.
More unit tests:
- GzipCompressor (test byte array compress method).
- NativeBigInteger (with optional benchmark mode, triggered from the command 
line).
- Buffer.
- ByteWrapper.
- Fields.hexToInt/hexToLong.
- New ant properties, benchmark and extensiveTesting.

batosai
dbkr
j16sdiz
NEOatNHNG
nextgens
toad
wavey

jFCPlib (java FCP library) - Bombe
- Initial commit. Create in apps/.
- Create 1.4 branch.
- Not fully reviewed. Read the source yourself it you have questions about it.
- Various improvements from initial commit.

Thingamablog - dieppe
- Use UploadFrom=direct not disk so works with a non-local node. Also with the 
activelink.
- Fix a bug when the user enters the URI manually and loses the last slash.
- Some logging output during publishing.
- No PublishAll action for a flog, it's the same as Publish.

KeyExplorer plugin - saces
- Add a simple fetcher, so the plugin can download a block before parsing it. 
This is scheduled as a proper fetch, so doesn't interfere with scheduling or 
stick out on remote traffic.

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-04-15 11:42:00 UTC (rev 
19347)
+++ trunk/freenet/src/freenet/node/Version.java 2008-04-15 11:43:29 UTC (rev 
19348)
@@ -24,17 +24,17 @@
        public static final String protocolVersion = "1.0";

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

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 1138;
-       private static final int newLastGoodBuild = 1139;
+       private static final int newLastGoodBuild = 1140;
        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, 16, 0, 0, 0 );
+               _cal.set( 2008, Calendar.APRIL, 17, 0, 0, 0 );
                transitionTime = _cal.getTimeInMillis();
        }



Reply via email to