Author: nextgens
Date: 2008-08-31 22:15:47 +0000 (Sun, 31 Aug 2008)
New Revision: 22291
Modified:
trunk/freenet/src/freenet/node/PeerManager.java
Log:
untested change: create a dedicated job off-thread to write the peer file to
disk (profiling has shown it's a hotspot)
Modified: trunk/freenet/src/freenet/node/PeerManager.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerManager.java 2008-08-31 21:57:34 UTC
(rev 22290)
+++ trunk/freenet/src/freenet/node/PeerManager.java 2008-08-31 22:15:47 UTC
(rev 22291)
@@ -80,6 +80,21 @@
/** routableConnectionStats update interval (milliseconds) */
private static final long routableConnectionStatsUpdateInterval = 7 *
1000; // 7 seconds
+ /** Should update the peer-file ? */
+ private volatile boolean shouldWritePeers = false;
+ private static final int MIN_WRITEPEERS_DELAY = 5*1000; // 5sec
+ private final Runnable writePeersRunnable = new Runnable() {
+
+ public void run() {
+ if(shouldWritePeers) {
+ shouldWritePeers = false;
+ writePeersInner();
+ }
+
+ node.ps.queueTimedJob(writePeersRunnable,
MIN_WRITEPEERS_DELAY);
+ }
+ };
+
/**
* Track the number of times a PeerNode has been selected by the
routing algorithm
* @see PeerNode.numberOfSelections
@@ -1069,12 +1084,7 @@
private final Object writePeerFileSync = new Object();
void writePeers() {
- node.ps.queueTimedJob(new Runnable() {
-
- public void run() {
- writePeersInner();
- }
- }, 0);
+ shouldWritePeers = true;
}
protected StringBuilder getDarknetPeersString() {
@@ -1282,6 +1292,7 @@
ua = new PeerManagerUserAlert(node.nodeStats);
updatePMUserAlert();
node.clientCore.alerts.register(ua);
+ node.ps.queueTimedJob(writePeersRunnable, 0);
}
public int countNonBackedOffPeers() {