OFF Version 0.17.09 für Linux, Windows & Mac verfügbar.
- Changed the push block list to the "list + updates" method which
reduces mutex accesses by the main worker threads.
- Fixed bug where the nodelist manager would be flagged that RSA keys
needed to be checked when an empty Node object was created (because
the object had a blank RSA key).
- Allowed pushes to nodes with the same HamDist from the as the pusher.
This will result in older nodes refusing such pushes - seems too
trivial a change to use a version check.
- Redesigned the block pusher module since it predates the asynchronous
comms, The push procedure has been made asynchronous and it is
now possible to push blocks to more than one node at a time when
trimming the cache. The limit for this has been arbitrarily set to 10,
but may be determined dynamically by available bandwidth later.
A dedicated thread is no longer necessary for block pushes and this
thread has been removed. Block pushing is now monitored by the iterator
thread in the DownloadManager class. Pushes that occur during distribution
of inserts still happen synchronously for the time being.
- Implemented sorting of nodelists using qsort() which should speed up
choosing which nodes to push to.
- Blocks scheduled for push should no longer be chosen as randomiser
for inserts, this means that we can now store files while the cache
is being trimmed.
- Gave the async cnxn handler a "permanent" nodelist with updates
similar the download manager, this will stop us from needlessly
making temp nodelists whenever things like block requests are received.
- Added a checkbox to automatically unpreserve inserts on distribute.
- All 2way comms from non-pool firewalled nodes now happens in
the finalser threads and not the thread that created the socket.
- Implemented an asynchronous non-blocking open for firewall check pings
(pingbacks) which obviates the need for a dedicated thread to finalise
connections and this thread has been removed.
- Redesigned the top level srch module to perform srches asynchronously.
The number of simultaneous srches has been limited to 10 (arbitrarily),
and only one srch is allowed to each node at a time. The two search
manager threads have been removed and the DownloadManager iterator thread
again handles this task.
- Block pushes in distribution of inserts are now piped through a small
monitor class that allows 10 simultaneous pushes to occur at
any one time. Distribution should be a lot more efficient now and
also prints statistics to the log on completion indicating how many
pushes succeeded and failed and how many of the blocks "belonged"
on the local node.
- Fixed bug where the block requester thread would sometimes try to
send it's "no more requests message" after the socket had failed to open
or a network error occurred.
- Added a very short sleep to the async cnxn handler thread to limit
iterations to 50 per second, this may or may not reduce CPU use
in the case where there are lots of cnxns and only a few are
acted on in each iteration.
- Block requests are now iterated by the async cnxn handler and the
thread dedicated to block requests has been removed.
- Fixed bug in the algorithm which chooses the nodes to request a
given block from - or rather rewrote the algorithm from scratch,
since it was doing nothing like what it was supposed to!
- When a block request is deferred due to it's being currently requested
from another node, it will wait only for 30 seconds before being
requested anyway - previously, it would wait indefinitely.
- Fixed crasher in error handling when parsing corrupted srch results.
- When a node decides whether it is the home node for a block on
receiving a request for that block it will exclude the requester
from the calculation. Hence it will perform a flood srch for
the block if it is the best node Apart from the one requesting.
- All tasks performed by the iterator thread in the DownloadManager class
are now performed by the async cnxn handler thread, and the iterator
thread has been removed for the DownloadManager class. The nodelists
kept by these two threads have been merged.
- Extended the timed completion check on downloads from every 15 mins
to every hour which should save some CPU for large downloads. This
check will go at some stage, assuming it is still useful but some
refactoring of the dl process will be required.
- If a block fails to load when requested by another node (after
being confirmed to be local) we send a "failed" message, rather
than just giving up on the connection. In addition, that block
name is added to a list of "suspect" blocks which is periodically
checked by the nodelist manager thread. The size and hash of
suspect blocks is checked and failures are dealt with according
to the Keep Corrupt Blocks policy.
- New relayed block requests can now only force a timeout of an
existing one if either the existing request is not for a block
that belongs on our node, or the new request is for such a block.
Thus, we prioritise relayed requests for our home blocks.
- Used sizers to tidy the Add Node dialog under gtk.
- Whatever bizarre link error stopped the empty nodelist dialog from
building under GTK seems to have gone away. This dialog will
now open in Linux when a node starts up with an empty nodelist,
and has also been sizer-ified.
- Fixed bug where the check item in the View menu to toggle the toolbar
did not correspond to whether the toolbar was actually shown or not.
- The blockcache now keeps an array of the number of blocks in each of
its 256 lists. For those interested, the data can be printed from the
view menu, but the first use is to speed up the selection of random
blocks from the cache which (according to profiles) makes storing
files about 30% faster.
- Relayed requests for blocks which belong on the local node no
longer undergo the usual timed requests to individual other nodes.
Instead the perform flood srch on a similar timer, but which starts
with 4x the usual delay (4*10 secs). This will get blocks home faster when
the node which has them runs out of slots or temporarily goes offline.
- Implemented nodelist sorting to speed up the selection of nodes to request
- Three new themes added to the windows installer.
https://sourceforge.net/project/showfil ... p_id=96735