Author: toad
Date: 2008-05-23 23:59:07 +0000 (Fri, 23 May 2008)
New Revision: 20090

Modified:
   trunk/freenet/src/freenet/node/Version.java
Log:
1151:
L10n:
- More Chinese translations.
Client layer:
- USKs: Don't hold the USKFetcher lock while decoding the metadata block. This 
method can be called from the packet receiver threads, so shouldn't block for 
I/O.
- ClientRequestScheduler: Dropped flag was wrong in removePendingKey(), so 
sometimes we wouldn't remove from offeredKeys => memory leak.
Datastore:
- Even faster reconstruction: Don't read the headers unless we need to, seek if 
we do.
- Trivial refactoring.
- Don't read the data if we don't need to.
- Fix an instant timeout during reconstruction on a huge store.
Bookmarks:
- Update editions.
Dev stuff:
- Indenting.
- Logging.
- Trivial commits to test whether the smartbear (codecollaborator, closed 
source code review engine we've got access to) integration is working, and to 
test the attach-a-commit-to-an-existing-review mechanism (which still doesn't 
work).
- Comments.

Website:
- Ask for and autodetect java 1.5 (not 1.4). German and English versions.
- Better 404 handling.
- Cleanup an FAQ item slightly.
- Delete dead code which was confusing the parser.

Installer:
- Require java 1.5.

Scripts:
- Fix verify_indent script (add -source 1.4).

j16sdiz
toad
nextgens

OTHER RECENT PROGRESS: (Not part of 1151, but you may be interested in it):

DB4O BRANCH (client layer in database): (toad)
- NOT WORKING. Not even tested. Significant work remains to be done, some 
explanation of this on devl list:
Subject: [freenet-dev] Preliminary design notes for queue-in-database (3 days 
after starting implementation!!)
- Create branch.
- Use a 64-bit handle to represent the node when pulling objects from db4o. 
This is fetched from the port number, we don't use that because it might change.
- For now, a single database, a single thread on which all database access 
occurs. This avoids a number of headaches with transactions: refreshing data 
structures, multiple copies of the same object, clashes resulting from objects 
from two transactions interacting, multiple object caches, etc. Many methods on 
ClientRequestScheduler (see below) check whether we want persistent or 
non-peristent, and if persistent, queue a job on the database thread 
SerialExecutor.
- Delete anyWantKey and related methods. Not used. Use the off-thread 
maybeQueueOfferedKey instead.
- ClientRequestSchedulerCore - handles persistent queue data structures etc. 
Also implements removeFirst(), which uses both persistent and non-persistent 
queues to find the next request to run (whichever has higher priority, retry 
count; if there is a tie, random weighted by number of clients between the two; 
in other words, exactly the same as previous behaviour). Currently all 
non-persistent params must be passed in, although we may change this using 
transient members. Currently uses db4o collections (with low activation depth), 
but may be migrated to use queries and indexes for better support for 
transactions/concurrency.
- ClientRequestSchedulerNonPersistent - non-persistent queue data structures.
- ClientRequestSchedulerBase - some code shared by both.
- ClientRequestScheduler - mostly creates the others, passes stuff along, puts 
it onto the right thread.
- Lock in ClientRequestScheduler before calling CRSCore/CRSNP. Don't lock in 
them (usually).
- If-it-succeeds-repeat-it logic now deals with BaseSendableGet's rather than 
RGA's.
- Delete obsolete Spider and NinjaSpider - I thought we already had?
- SendableRequest.getClient() isn't an Object any more, it's a RequestClient.
- RequestClient has one method, boolean persistent(), this indicates whether 
the client is persistent or not. This must not change from creation.
- Both of these in some cases result in changing the client (for round-robin 
grouping), e.g. node.nonPersistentClient.
- FCPClient's now have two client objects, one for persistent and one for 
non-persistent, because a queue layer client must be one or the other.
- SendableRequest also has persistent(), and so does RandomGrabArray and 
SectoredRandomGrabArray, and they enforce this. Also ClientRequester has 
persistent().
- CooldownQueue: Make an interface CooldownQueue, keep the old one for 
non-persistent requests, implement a new, very simple, db4o-query-based 
PersistentCooldownQueue for persistent requests. (The old one is very complex 
in order to minimize memory usage; the new one uses objects and queries for 
simplicity, to minimize what has to be paged in to RAM, and to maximize 
transaction compatibility).
- CooldownQueue: removeKeyBefore() now returns up to specified number of keys 
in an array. Much more efficient for database, comparable for non-database.
- Index the CooldownQueue's keys for efficient access. HOPEFULLY this will work 
given I've made the keys Comparable. I will test this before merging...
- Pass in ObjectContainer (null if not persistent) to many methods e.g. 
CooldownQueue.*.
- Imports.
- Comments.

SALTED HASH DATASTORE BRANCH: (j16sdiz)
- Fix not unlocking or unlocking too early in various places.
- Clarify code for overwriting entry when we get a KeyVerifyException in put() 
fetching the key.
- put(): If all slots for the key are occupied, overwrite the first one, not a 
random one.
- Cheaper, simpler isFree() (just read the flags)
- Constant for number of probes.
- Don't report inaccurate key count.
- Fix an off by one error shrinking the store.
- Optimisation to checking store size: only read full entry if needed.
- Write a complete empty disk block (512 bytes) when freeing an entry.
- Use Fields.bytesToLong().
- Limit size of old-items file while shrinking to 256MB.
- BLOOM FILTER: mmap'ed bytebuffer, non-counting (bitmapped). Will therefore 
need to be regenerated periodically, not implemented yet. Should dramatically 
cut the average seeking cost of a typical failed lookup.
- Logging.
- SaltedHashFreenetStore can be configured using the store type option. 
However, it will not auto-migrate in any way an old BDBFS store.
- Merge updates from trunk.

JSITE: (bombe)
- 0.4.11.1: Fix an NPE on startup.
- Handle connection closes better. Logging.
- Add svnignore for eclipse settings dir.

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2008-05-23 23:52:12 UTC (rev 
20089)
+++ trunk/freenet/src/freenet/node/Version.java 2008-05-23 23:59:07 UTC (rev 
20090)
@@ -24,7 +24,7 @@
        public static final String protocolVersion = "1.0";

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

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 1145;


Reply via email to