* ProfileOrganizer:
- Use more recent stats to calculate integrationory.txt - Show that fast peers are also high-capacity on profiles.jsp * readme.html: Update Syndie link * TunnelPool: Update comments * netDb: Report 1-2h uptime as 90m to further frustrate tracking, get rid of the 60s tunnel stats (effective as of .33 to provide cover)
This commit is contained in:
10
history.txt
10
history.txt
@ -1,4 +1,14 @@
|
|||||||
2008-03-14 zzz
|
2008-03-14 zzz
|
||||||
|
* ProfileOrganizer:
|
||||||
|
- Use more recent stats to calculate integrationory.txt
|
||||||
|
- Show that fast peers are also high-capacity on profiles.jsp
|
||||||
|
* readme.html: Update Syndie link
|
||||||
|
* TunnelPool: Update comments
|
||||||
|
* netDb: Report 1-2h uptime as 90m to further frustrate tracking,
|
||||||
|
get rid of the 60s tunnel stats
|
||||||
|
(effective as of .33 to provide cover)
|
||||||
|
|
||||||
|
2008-03-13 zzz
|
||||||
* Floodfill Search:
|
* Floodfill Search:
|
||||||
- Fix a bug that caused a single FloodfillOnlySearchJob
|
- Fix a bug that caused a single FloodfillOnlySearchJob
|
||||||
instance to be run multiple times, with unpredictable
|
instance to be run multiple times, with unpredictable
|
||||||
|
72
news.xml
72
news.xml
@ -9,6 +9,23 @@
|
|||||||
publicurl="http://dev.i2p.net/pipermail/i2p/2005-July/000826.html"
|
publicurl="http://dev.i2p.net/pipermail/i2p/2005-July/000826.html"
|
||||||
anonlogs="http://i2p/Nf3ab-ZFkmI-LyMt7GjgT-jfvZ3zKDl0L96pmGQXF1B82W2Bfjf0n7~288vafocjFLnQnVcmZd~-p0-Oolfo9aW2Rm-AhyqxnxyLlPBqGxsJBXjPhm1JBT4Ia8FB-VXt0BuY0fMKdAfWwN61-tj4zIcQWRxv3DFquwEf035K~Ra4SWOqiuJgTRJu7~o~DzHVljVgWIzwf8Z84cz0X33pv-mdG~~y0Bsc2qJVnYwjjR178YMcRSmNE0FVMcs6f17c6zqhMw-11qjKpY~EJfHYCx4lBWF37CD0obbWqTNUIbL~78vxqZRT3dgAgnLixog9nqTO-0Rh~NpVUZnoUi7fNR~awW5U3Cf7rU7nNEKKobLue78hjvRcWn7upHUF45QqTDuaM3yZa7OsjbcH-I909DOub2Q0Dno6vIwuA7yrysccN1sbnkwZbKlf4T6~iDdhaSLJd97QCyPOlbyUfYy9QLNExlRqKgNVJcMJRrIual~Lb1CLbnzt0uvobM57UpqSAAAA/meeting141"
|
anonlogs="http://i2p/Nf3ab-ZFkmI-LyMt7GjgT-jfvZ3zKDl0L96pmGQXF1B82W2Bfjf0n7~288vafocjFLnQnVcmZd~-p0-Oolfo9aW2Rm-AhyqxnxyLlPBqGxsJBXjPhm1JBT4Ia8FB-VXt0BuY0fMKdAfWwN61-tj4zIcQWRxv3DFquwEf035K~Ra4SWOqiuJgTRJu7~o~DzHVljVgWIzwf8Z84cz0X33pv-mdG~~y0Bsc2qJVnYwjjR178YMcRSmNE0FVMcs6f17c6zqhMw-11qjKpY~EJfHYCx4lBWF37CD0obbWqTNUIbL~78vxqZRT3dgAgnLixog9nqTO-0Rh~NpVUZnoUi7fNR~awW5U3Cf7rU7nNEKKobLue78hjvRcWn7upHUF45QqTDuaM3yZa7OsjbcH-I909DOub2Q0Dno6vIwuA7yrysccN1sbnkwZbKlf4T6~iDdhaSLJd97QCyPOlbyUfYy9QLNExlRqKgNVJcMJRrIual~Lb1CLbnzt0uvobM57UpqSAAAA/meeting141"
|
||||||
publiclogs="http://www.i2p.net/meeting141" />
|
publiclogs="http://www.i2p.net/meeting141" />
|
||||||
|
<p>
|
||||||
|
•
|
||||||
|
2008-03-14: <b><a href="http://forum.i2p/">forum.i2p</a> is Temporarily Down</b>
|
||||||
|
</p><p>
|
||||||
|
Use
|
||||||
|
<a href="http://codevoid.i2p/forum">codevoid.i2p/forum</a>
|
||||||
|
as an alternate.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
•
|
||||||
|
2008-03-14: <b>krabs.i2p</a> Outproxy is Temporarily Down</b>
|
||||||
|
</p><p>
|
||||||
|
Use new outproxy false.i2p
|
||||||
|
as an alternate - must be in your hosts.txt.
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
•
|
•
|
||||||
2008-03-09: <b>0.6.1.32 Released</b>
|
2008-03-09: <b>0.6.1.32 Released</b>
|
||||||
@ -24,7 +41,7 @@ You may wish to adjust your limits on
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
•
|
•
|
||||||
2008-02-29: <b>Upcoming 0.6.1.32 Release</b>
|
2008-02-29: <b>Upgrading from 0.6.1.31</b>
|
||||||
</p><p>
|
</p><p>
|
||||||
If you upgraded from 0.6.1.30 to 0.6.1.31, you may wish to take advantage
|
If you upgraded from 0.6.1.30 to 0.6.1.31, you may wish to take advantage
|
||||||
of the new round-robin update downloading when .32 is released. This is optional.
|
of the new round-robin update downloading when .32 is released. This is optional.
|
||||||
@ -40,57 +57,8 @@ If you already have three Update URLs, you do not have to do anything.
|
|||||||
•
|
•
|
||||||
2008-02-05: <b>Upgrading from 0.6.1.30 and Earlier Releases</b>
|
2008-02-05: <b>Upgrading from 0.6.1.30 and Earlier Releases</b>
|
||||||
</p><p>
|
</p><p>
|
||||||
Since i2p's lead developer
|
Full instructions are posted at
|
||||||
<a href="http://dreamtheaterfan.i2p/jrandom-awol.html">has gone AWOL</a>,
|
<a href="http://www.i2p2.i2p/upgrade-0.6.1.30.html">www.i2p2.i2p/upgrade-0.6.1.30.html</a>.
|
||||||
we do not have his update signing key or write access to
|
|
||||||
<a href="http://www.i2p/">www.i2p</a> or
|
|
||||||
<a href="http://dev.i2p/">dev.i2p</a>.
|
|
||||||
Complication and zzz have generated new signing keys, and they and Amiga are providing
|
|
||||||
update file hosting. These changes must be configured in your router to take effect.
|
|
||||||
</p><p>
|
|
||||||
Make the following configuration changes and your router will automatically install
|
|
||||||
the latest release.
|
|
||||||
</p><p>
|
|
||||||
We recommend the automated process as it will verify the key of the signed update file.
|
|
||||||
If you do not make these changes,
|
|
||||||
you may manually download the i2pupdate.zip file from
|
|
||||||
<a href="http://www.i2p2.i2p/download.html">www.i2p2.i2p/download</a>.
|
|
||||||
<ol><li>
|
|
||||||
On
|
|
||||||
<a href="configupdate.jsp">configupdate.jsp</a>:
|
|
||||||
</li><ol type="a"><li>
|
|
||||||
Change the News URL to: http://complication.i2p/news.xml
|
|
||||||
</li><li>
|
|
||||||
Select ONE of the following new Update URLs at random and enter it into the Update URL box:
|
|
||||||
<br />http://amiga.i2p/i2p/i2pupdate.sud
|
|
||||||
<br />http://complication.i2p/i2p/i2pupdate.sud
|
|
||||||
<br />http://stats.i2p/i2p/i2pupdate.sud
|
|
||||||
</li><li>
|
|
||||||
Check the box "Update through the eepProxy?"
|
|
||||||
</li><li>
|
|
||||||
Click "Save"
|
|
||||||
</li></ol>
|
|
||||||
<li>
|
|
||||||
On
|
|
||||||
<a href="configadvanced.jsp">configadvanced.jsp</a>:
|
|
||||||
<ol type="a"><li>
|
|
||||||
Add the following line:
|
|
||||||
<br />
|
|
||||||
<textarea rows="1" cols="80" readonly="readonly">router.trustedUpdateKeys=W4kJbnv9KSVwbnapV7SaNW2kMIZKs~hwL0ro9pZXFo1xTwqz45nykCp1HM7sAKYDZay5z1HvYYOl9CNVz00xF03KPU9RUCVxhDZ1YXhZIskPKjUPUsCIpE~Z1C~N9KSEV6~2stDlBNH10VZ4T0X1TrcXwb3IBXliWo2y2GAx~Ow=,lT54eq3SH0TWWwQ1wgH6XPelIno7wH7UfiZOpQg-ZuxdNhc4UjjrohKdKZqfswt1ANPnmOlMewLGBESl7kJB9c5sByz~IOlNyz5BMLRC~R~ZC9QI4WXwUBYW8BhYO2mkvtdOrcy690lDkwzdf5xLxlCBpQlTaLYzQVjVWBcvbCA=,JHFA0yXUgKtmhajXFZH9Nk62OPRHbvvQHTi8EANV-D~3tjLjaz9p9cs6Fs8W3FSLfUwsQeFg7dfVSQQZga~1jMjboo94vIcm3j6XbW4mbcorVQ74uPjd8EA1AQhJ6bBTxDAFk~6fVDOdhHT0Wo5CcUn7v8bAYY3x3UWiL8Remx0=</textarea>
|
|
||||||
</li><li>
|
|
||||||
Click "Apply"
|
|
||||||
</li></ol>
|
|
||||||
<li>
|
|
||||||
You are now ready to automatically receive the release update file,
|
|
||||||
either by setting your update policy to "download and install" or by clicking on the
|
|
||||||
"update available" link when it appears.
|
|
||||||
</li></li></ol>
|
|
||||||
</p><p>
|
|
||||||
If you would like to verify the trusted update keys, they are also
|
|
||||||
<a href="http://stats.i2p/i2p/signingkeys.html">posted and signed here</a>.
|
|
||||||
Thank you for your support during this transition. For help please contact us on #i2p.
|
|
||||||
</p><p>
|
|
||||||
Amiga, Complication, welterde, zzz
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -3,7 +3,7 @@ grow over the next few minutes and you'll see a "shared clients" local destinati
|
|||||||
on the left (if not, <a href="#trouble">see below</a>). Once those show up,
|
on the left (if not, <a href="#trouble">see below</a>). Once those show up,
|
||||||
you can:</p>
|
you can:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><b>blog anonymously</b> - check out <a href="http://syndie.i2p/">Syndie</a></li>
|
<li><b>blog anonymously</b> - check out <a href="http://syndie.i2p2.de/">Syndie</a></li>
|
||||||
<li><b>chat anonymously</b> - fire up your own IRC client and connect to the
|
<li><b>chat anonymously</b> - fire up your own IRC client and connect to the
|
||||||
server at <b>localhost port 6668</b>. This points at one of two anonymously hosted
|
server at <b>localhost port 6668</b>. This points at one of two anonymously hosted
|
||||||
IRC servers, but neither you nor they know where the other is.</li>
|
IRC servers, but neither you nor they know where the other is.</li>
|
||||||
@ -55,7 +55,7 @@ Detailed instructions for starting your eepsite are on
|
|||||||
<p>Be patient - I2P may be slow to start the first time as it searches for peers.
|
<p>Be patient - I2P may be slow to start the first time as it searches for peers.
|
||||||
If, after 30 minutes, your Active: connected/recent count has less than 10 connected
|
If, after 30 minutes, your Active: connected/recent count has less than 10 connected
|
||||||
peers, you should open port 8887 on your firewall for better connectivity.
|
peers, you should open port 8887 on your firewall for better connectivity.
|
||||||
If you cannot see any eepsites at all (even <a href="http://www.i2p2.i2p">www.i2p2.i2p</a>),
|
If you cannot see any eepsites at all (even <a href="http://www.i2p2.i2p/">www.i2p2.i2p</a>),
|
||||||
be sure your browser proxy is set to localhost port 4444.
|
be sure your browser proxy is set to localhost port 4444.
|
||||||
You may also want to review the information on the
|
You may also want to review the information on the
|
||||||
<a href="http://www.i2p2.i2p/">I2P website</a>, post up messages to the
|
<a href="http://www.i2p2.i2p/">I2P website</a>, post up messages to the
|
||||||
|
@ -17,7 +17,7 @@ import net.i2p.CoreVersion;
|
|||||||
public class RouterVersion {
|
public class RouterVersion {
|
||||||
public final static String ID = "$Revision: 1.548 $ $Date: 2008-02-10 15:00:00 $";
|
public final static String ID = "$Revision: 1.548 $ $Date: 2008-02-10 15:00:00 $";
|
||||||
public final static String VERSION = "0.6.1.32";
|
public final static String VERSION = "0.6.1.32";
|
||||||
public final static long BUILD = 5;
|
public final static long BUILD = 6;
|
||||||
public static void main(String args[]) {
|
public static void main(String args[]) {
|
||||||
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
|
||||||
System.out.println("Router ID: " + RouterVersion.ID);
|
System.out.println("Router ID: " + RouterVersion.ID);
|
||||||
|
@ -128,6 +128,7 @@ public class StatisticsManager implements Service {
|
|||||||
if (false)
|
if (false)
|
||||||
stats.putAll(_context.profileManager().summarizePeers(_publishedStats));
|
stats.putAll(_context.profileManager().summarizePeers(_publishedStats));
|
||||||
|
|
||||||
|
boolean commentMeOutInDot33 = RouterVersion.VERSION.equals("0.6.1.32");
|
||||||
includeThroughput(stats);
|
includeThroughput(stats);
|
||||||
//includeRate("router.invalidMessageTime", stats, new long[] { 10*60*1000 });
|
//includeRate("router.invalidMessageTime", stats, new long[] { 10*60*1000 });
|
||||||
//includeRate("router.duplicateMessageId", stats, new long[] { 24*60*60*1000 });
|
//includeRate("router.duplicateMessageId", stats, new long[] { 24*60*60*1000 });
|
||||||
@ -162,7 +163,11 @@ public class StatisticsManager implements Service {
|
|||||||
|
|
||||||
//includeRate("transport.sendProcessingTime", stats, new long[] { 60*60*1000 });
|
//includeRate("transport.sendProcessingTime", stats, new long[] { 60*60*1000 });
|
||||||
//includeRate("jobQueue.jobRunSlow", stats, new long[] { 10*60*1000l, 60*60*1000l });
|
//includeRate("jobQueue.jobRunSlow", stats, new long[] { 10*60*1000l, 60*60*1000l });
|
||||||
|
if (commentMeOutInDot33) { // get rid of 60s stats
|
||||||
includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*1000, 60*60*1000 });
|
includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*1000, 60*60*1000 });
|
||||||
|
} else {
|
||||||
|
includeRate("crypto.elGamal.encrypt", stats, new long[] { 60*60*1000 });
|
||||||
|
}
|
||||||
includeRate("tunnel.participatingTunnels", stats, new long[] { 5*60*1000, 60*60*1000 });
|
includeRate("tunnel.participatingTunnels", stats, new long[] { 5*60*1000, 60*60*1000 });
|
||||||
//includeRate("tunnel.testSuccessTime", stats, new long[] { 10*60*1000l });
|
//includeRate("tunnel.testSuccessTime", stats, new long[] { 10*60*1000l });
|
||||||
includeRate("client.sendAckTime", stats, new long[] { 60*60*1000 }, true);
|
includeRate("client.sendAckTime", stats, new long[] { 60*60*1000 }, true);
|
||||||
@ -174,12 +179,15 @@ public class StatisticsManager implements Service {
|
|||||||
//includeRate("stream.con.receiveDuplicateSize", stats, new long[] { 60*60*1000 });
|
//includeRate("stream.con.receiveDuplicateSize", stats, new long[] { 60*60*1000 });
|
||||||
|
|
||||||
// Round smaller uptimes to 1 hour, to frustrate uptime tracking
|
// Round smaller uptimes to 1 hour, to frustrate uptime tracking
|
||||||
|
// Round 2nd hour to 90m since peers use 2h minimum to route
|
||||||
long publishedUptime = _context.router().getUptime();
|
long publishedUptime = _context.router().getUptime();
|
||||||
if (publishedUptime < 60*60*1000) publishedUptime = 60*60*1000;
|
if (publishedUptime < 60*60*1000) publishedUptime = 60*60*1000;
|
||||||
|
else if (publishedUptime < 2*60*60*1000 && !commentMeOutInDot33) publishedUptime = 90*60*1000;
|
||||||
|
|
||||||
stats.setProperty("stat_uptime", DataHelper.formatDuration(publishedUptime));
|
stats.setProperty("stat_uptime", DataHelper.formatDuration(publishedUptime));
|
||||||
//stats.setProperty("stat__rateKey", "avg;maxAvg;pctLifetime;[sat;satLim;maxSat;maxSatLim;][num;lifetimeFreq;maxFreq]");
|
//stats.setProperty("stat__rateKey", "avg;maxAvg;pctLifetime;[sat;satLim;maxSat;maxSatLim;][num;lifetimeFreq;maxFreq]");
|
||||||
|
|
||||||
|
if (commentMeOutInDot33) { // get rid of 60s stats
|
||||||
includeRate("tunnel.buildRequestTime", stats, new long[] { 60*1000, 10*60*1000 });
|
includeRate("tunnel.buildRequestTime", stats, new long[] { 60*1000, 10*60*1000 });
|
||||||
//includeRate("tunnel.decryptRequestTime", stats, new long[] { 60*1000, 10*60*1000 });
|
//includeRate("tunnel.decryptRequestTime", stats, new long[] { 60*1000, 10*60*1000 });
|
||||||
includeRate("tunnel.buildClientExpire", stats, new long[] { 60*1000, 10*60*1000 });
|
includeRate("tunnel.buildClientExpire", stats, new long[] { 60*1000, 10*60*1000 });
|
||||||
@ -194,6 +202,18 @@ public class StatisticsManager implements Service {
|
|||||||
|
|
||||||
includeRate("tunnel.rejectOverloaded", stats, new long[] { 60*1000, 10*60*1000 });
|
includeRate("tunnel.rejectOverloaded", stats, new long[] { 60*1000, 10*60*1000 });
|
||||||
includeRate("tunnel.acceptLoad", stats, new long[] { 60*1000, 10*60*1000 });
|
includeRate("tunnel.acceptLoad", stats, new long[] { 60*1000, 10*60*1000 });
|
||||||
|
} else {
|
||||||
|
includeRate("tunnel.buildRequestTime", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.buildClientExpire", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.buildClientReject", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.buildClientSuccess", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.buildExploratoryExpire", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.buildExploratoryReject", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.buildExploratorySuccess", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.rejectTimeout", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.rejectOverloaded", stats, new long[] { 10*60*1000 });
|
||||||
|
includeRate("tunnel.acceptLoad", stats, new long[] { 10*60*1000 });
|
||||||
|
}
|
||||||
|
|
||||||
if (FloodfillNetworkDatabaseFacade.isFloodfill(_context.router().getRouterInfo())) {
|
if (FloodfillNetworkDatabaseFacade.isFloodfill(_context.router().getRouterInfo())) {
|
||||||
stats.setProperty("netdb.knownRouters", ""+_context.netDb().getKnownRouters());
|
stats.setProperty("netdb.knownRouters", ""+_context.netDb().getKnownRouters());
|
||||||
|
@ -18,7 +18,11 @@ public class IntegrationCalculator extends Calculator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public double calc(PeerProfile profile) {
|
public double calc(PeerProfile profile) {
|
||||||
|
// give more weight to recent counts
|
||||||
long val = profile.getDbIntroduction().getRate(24*60*60*1000l).getCurrentEventCount();
|
long val = profile.getDbIntroduction().getRate(24*60*60*1000l).getCurrentEventCount();
|
||||||
|
val += 2 * 4 * profile.getDbIntroduction().getRate(6*60*60*1000l).getCurrentEventCount();
|
||||||
|
val += 4 * 24 * profile.getDbIntroduction().getRate(60*60*1000l).getCurrentEventCount();
|
||||||
|
val /= 7;
|
||||||
val += profile.getIntegrationBonus();
|
val += profile.getIntegrationBonus();
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ public class PeerProfile {
|
|||||||
if (_commError == null)
|
if (_commError == null)
|
||||||
_commError = new RateStat("commErrorRate", "how long between communication errors with the peer (e.g. disconnection)", group, new long[] { 60*1000l, 10*60*1000l, 60*60*1000l, 24*60*60*1000 } );
|
_commError = new RateStat("commErrorRate", "how long between communication errors with the peer (e.g. disconnection)", group, new long[] { 60*1000l, 10*60*1000l, 60*60*1000l, 24*60*60*1000 } );
|
||||||
if (_dbIntroduction == null)
|
if (_dbIntroduction == null)
|
||||||
_dbIntroduction = new RateStat("dbIntroduction", "how many new peers we get from dbSearchReplyMessages or dbStore messages", group, new long[] { 60*60*1000l, 24*60*60*1000l, 7*24*60*60*1000l });
|
_dbIntroduction = new RateStat("dbIntroduction", "how many new peers we get from dbSearchReplyMessages or dbStore messages", group, new long[] { 60*60*1000l, 6*60*60*1000l, 24*60*60*1000l });
|
||||||
|
|
||||||
if (_tunnelHistory == null)
|
if (_tunnelHistory == null)
|
||||||
_tunnelHistory = new TunnelHistory(_context, group);
|
_tunnelHistory = new TunnelHistory(_context, group);
|
||||||
|
@ -104,7 +104,7 @@ class ProfileOrganizerRenderer {
|
|||||||
buf.append("<td>");
|
buf.append("<td>");
|
||||||
|
|
||||||
switch (tier) {
|
switch (tier) {
|
||||||
case 1: buf.append("Fast"); break;
|
case 1: buf.append("Fast, High Capacity"); break;
|
||||||
case 2: buf.append("High Capacity"); break;
|
case 2: buf.append("High Capacity"); break;
|
||||||
case 3: buf.append("Not Failing"); break;
|
case 3: buf.append("Not Failing"); break;
|
||||||
default: buf.append("Failing"); break;
|
default: buf.append("Failing"); break;
|
||||||
|
@ -484,15 +484,16 @@ public class TunnelPool {
|
|||||||
/**
|
/**
|
||||||
* This algorithm builds based on the previous average length of time it takes
|
* This algorithm builds based on the previous average length of time it takes
|
||||||
* to build a tunnel. This average is kept in the _buildRateName stat.
|
* to build a tunnel. This average is kept in the _buildRateName stat.
|
||||||
* It is a separate stat for each pool, since in and out building use different methods,
|
* It is a separate stat for each type of pool, since in and out building use different methods,
|
||||||
|
* as do exploratory and client pools,
|
||||||
* and each pool can have separate length and length variance settings.
|
* and each pool can have separate length and length variance settings.
|
||||||
* We add one minute to the stat for safety.
|
* We add one minute to the stat for safety (two for exploratory tunnels).
|
||||||
*
|
*
|
||||||
* We linearly increase the number of builds per expiring tunnel from
|
* We linearly increase the number of builds per expiring tunnel from
|
||||||
* 1 to PANIC_FACTOR as the time-to-expire gets shorter.
|
* 1 to PANIC_FACTOR as the time-to-expire gets shorter.
|
||||||
*
|
*
|
||||||
* The stat will be 0 for first 10m of uptime so we will use the conservative algorithm
|
* The stat will be 0 for first 10m of uptime so we will use the older, conservative algorithm
|
||||||
* further below instead. It will take about 30m of uptime to settle down.
|
* below instead. This algorithm will take about 30m of uptime to settle down.
|
||||||
* Or, if we are building more than 33% of the time something is seriously wrong,
|
* Or, if we are building more than 33% of the time something is seriously wrong,
|
||||||
* we also use the conservative algorithm instead
|
* we also use the conservative algorithm instead
|
||||||
*
|
*
|
||||||
@ -515,7 +516,7 @@ public class TunnelPool {
|
|||||||
avg = (int) ( TUNNEL_LIFETIME * r.getAverageValue() / wanted);
|
avg = (int) ( TUNNEL_LIFETIME * r.getAverageValue() / wanted);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (avg > 0 && avg < TUNNEL_LIFETIME / 3) {
|
if (avg > 0 && avg < TUNNEL_LIFETIME / 3) { // if we're taking less than 200s per tunnel to build
|
||||||
final int PANIC_FACTOR = 4; // how many builds to kick off when time gets short
|
final int PANIC_FACTOR = 4; // how many builds to kick off when time gets short
|
||||||
avg += 60*1000; // one minute safety factor
|
avg += 60*1000; // one minute safety factor
|
||||||
if (_settings.isExploratory())
|
if (_settings.isExploratory())
|
||||||
@ -644,6 +645,7 @@ public class TunnelPool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Helper function for the old conservative algorithm.
|
||||||
* This is the big scary function determining how many new tunnels we want to try to build at this
|
* This is the big scary function determining how many new tunnels we want to try to build at this
|
||||||
* point in time, as used by the BuildExecutor
|
* point in time, as used by the BuildExecutor
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user