Locking (on the Node end)? What can call maybe...()?
On Sun, Oct 22, 2006 at 06:27:20PM +0000, zothar at freenetproject.org wrote:
> Author: zothar
> Date: 2006-10-22 18:27:14 +0000 (Sun, 22 Oct 2006)
> New Revision: 10686
>
> Modified:
> trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
> trunk/freenet/src/freenet/node/Node.java
> trunk/freenet/src/freenet/node/PacketSender.java
> trunk/freenet/src/freenet/node/PeerNode.java
> trunk/freenet/src/freenet/node/PeerNodeStatus.java
> Log:
> Add percent Time Routable and export it and a few other things via FCP.
>
> Modified:
> trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
> ===================================================================
> --- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
> 2006-10-22 01:52:16 UTC (rev 10685)
> +++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
> 2006-10-22 18:27:14 UTC (rev 10686)
> @@ -339,6 +339,7 @@
>
> peerTableHeaderRow.addChild("th").addChild("span", new String[] { "title",
> "style" }, new String[] { "A private note concerning this peer",
> "border-bottom: 1px dotted; cursor: help;" }, "Private Note");
>
> if(advancedEnabled) {
> + peerTableHeaderRow.addChild("th",
> "%\u00a0Time Routable");
> peerTableHeaderRow.addChild("th",
> "Total\u00a0Traffic\u00a0(in/out)");
> }
>
> @@ -413,8 +414,12 @@
> // private darknet node comment note
> column
> peerRow.addChild("td", "class",
> "peer-private-darknet-comment-note").addChild("input", new String[] { "type",
> "name", "size", "maxlength", "value" }, new String[] { "text",
> "peerPrivateNote_" + peerNodeStatus.hashCode(), "16", "250",
> peerNodeStatus.getPrivateDarknetCommentNote() });
>
> - if(advancedEnabled)
> + if(advancedEnabled) {
> + // percent of time connected
> column
> + peerRow.addChild("td", "class",
> "peer-idle" /* FIXME */).addChild("#",
> fix1.format(peerNodeStatus.getPercentTimeRoutableConnection()));
> + // total traffic column
> peerRow.addChild("td", "class",
> "peer-idle" /* FIXME */).addChild("#",
> SizeUtil.formatSize(peerNodeStatus.getTotalInputBytes())+" /
> "+SizeUtil.formatSize(peerNodeStatus.getTotalOutputBytes()));
> + }
>
> if
> (path.endsWith("displaymessagetypes.html")) {
> HTMLNode messageCountRow =
> peerTable.addChild("tr", "class", "message-status");
>
> Modified: trunk/freenet/src/freenet/node/Node.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/Node.java 2006-10-22 01:52:16 UTC (rev
> 10685)
> +++ trunk/freenet/src/freenet/node/Node.java 2006-10-22 18:27:14 UTC (rev
> 10686)
> @@ -448,6 +448,10 @@
> private long nextNodeIOStatsUpdateTime = -1;
> /** Node I/O stats update interval (milliseconds) */
> private static final long nodeIOStatsUpdateInterval = 2000;
> + /** Next time to update routableConnectionStats */
> + private long nextRoutableConnectionStatsUpdateTime = -1;
> + /** routableConnectionStats update interval (milliseconds) */
> + private static final long routableConnectionStatsUpdateInterval = 7 *
> 1000; // 7 seconds
>
> // The version we were before we restarted.
> public int lastVersion;
> @@ -3093,4 +3097,20 @@
> }
> }
> }
> +
> + /**
> + * Update hadRoutableConnectionCount/routableConnectionCheckCount on
> peers if the timer has expired
> + */
> + public void maybeUpdatePeerNodeRoutableConnectionStats(long now) {
> + if(now > nextRoutableConnectionStatsUpdateTime) {
> + if(peers != null && -1 !=
> nextRoutableConnectionStatsUpdateTime) {
> + PeerNode[] peerList = peers.myPeers;
> + for(int i=0;i<peerList.length;i++) {
> + PeerNode pn = peerList[i];
> + pn.checkRoutableConnectionStatus();
> + }
> + }
> + nextRoutableConnectionStatsUpdateTime = now +
> routableConnectionStatsUpdateInterval;
> + }
> + }
> }
>
> Modified: trunk/freenet/src/freenet/node/PacketSender.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PacketSender.java 2006-10-22 01:52:16 UTC
> (rev 10685)
> +++ trunk/freenet/src/freenet/node/PacketSender.java 2006-10-22 18:27:14 UTC
> (rev 10686)
> @@ -155,6 +155,7 @@
> node.maybeUpdateOldestNeverConnectedPeerAge(now);
> node.maybeUpdatePeerManagerUserAlertStats(now);
> node.maybeUpdateNodeIOStats(now);
> + node.maybeUpdatePeerNodeRoutableConnectionStats(now);
> long nextActionTime = Long.MAX_VALUE;
> long oldTempNow = now;
> for(int i=0;i<nodes.length;i++) {
>
> Modified: trunk/freenet/src/freenet/node/PeerNode.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PeerNode.java 2006-10-22 01:52:16 UTC
> (rev 10685)
> +++ trunk/freenet/src/freenet/node/PeerNode.java 2006-10-22 18:27:14 UTC
> (rev 10686)
> @@ -307,6 +307,12 @@
> /** Total low-level output bytes */
> private long totalBytesOut;
>
> + /** Times had routable connection when checked */
> + private long hadRoutableConnectionCount;
> +
> + /** Times checked for routable connection */
> + private long routableConnectionCheckCount;
> +
> private static boolean logMINOR;
>
> /**
> @@ -571,6 +577,20 @@
> isListenOnly =
> Fields.stringToBool(metadata.get("isListenOnly"), false);
> isBurstOnly = Fields.stringToBool(metadata.get("isBurstOnly"),
> false);
> allowLocalAddresses =
> Fields.stringToBool(metadata.get("allowLocalAddresses"), false);
> + String tempHadRoutableConnectionCountString =
> metadata.get("hadRoutableConnectionCount");
> + if(tempHadRoutableConnectionCountString != null) {
> + long tempHadRoutableConnectionCount =
> Long.parseLong(tempHadRoutableConnectionCountString);
> + hadRoutableConnectionCount =
> tempHadRoutableConnectionCount;
> + } else {
> + hadRoutableConnectionCount = 0;
> + }
> + String tempRoutableConnectionCheckCountString =
> metadata.get("routableConnectionCheckCount");
> + if(tempRoutableConnectionCheckCountString != null) {
> + long tempRoutableConnectionCheckCount =
> Long.parseLong(tempRoutableConnectionCheckCountString);
> + routableConnectionCheckCount =
> tempRoutableConnectionCheckCount;
> + } else {
> + routableConnectionCheckCount = 0;
> + }
> }
> } else {
> neverConnected = true;
> @@ -1867,6 +1887,10 @@
> fs.put("isBurstOnly", "true");
> if(allowLocalAddresses)
> fs.put("allowLocalAddresses", "true");
> + if(hadRoutableConnectionCount > 0)
> + fs.put("hadRoutableConnectionCount",
> Long.toString(hadRoutableConnectionCount));
> + if(routableConnectionCheckCount > 0)
> + fs.put("routableConnectionCheckCount",
> Long.toString(routableConnectionCheckCount));
> return fs;
> }
>
> @@ -1889,6 +1913,10 @@
> fs.put("routingBackoffPercent",
> Double.toString(backedOffPercent.currentValue() * 100));
> fs.put("routingBackoff",
> Long.toString((Math.max(routingBackedOffUntil - now, 0))));
> fs.put("routingBackoffLength",
> Integer.toString(routingBackoffLength));
> + fs.put("overloadProbability",
> Double.toString(getPRejected() * 100));
> + fs.put("percentTimeRoutableConnection",
> Double.toString(getPercentTimeRoutableConnection() * 100));
> + fs.put("totalBytesIn", Long.toString(totalBytesIn));
> + fs.put("totalBytesOut", Long.toString(totalBytesOut));
> }
> fs.put("status", getPeerNodeStatusString());
> return fs;
> @@ -2938,4 +2966,28 @@
> }
> node.peers.writePeers();
> }
> +
> + public void checkRoutableConnectionStatus() {
> + synchronized(this) {
> + if(isRoutable()) {
> + hadRoutableConnectionCount += 1;
> + }
> + routableConnectionCheckCount += 1;
> + // prevent the average from moving too slowly by
> capping the checkcount to 200000,
> + // which, at 7 seconds between counts, works out to
> about 2 weeks. This also prevents
> + // knowing how long we've had a particular peer long
> term.
> + if(routableConnectionCheckCount >= 200000) {
> + // divide both sides by the same amount to keep
> the same ratio
> + hadRoutableConnectionCount =
> hadRoutableConnectionCount / 2;
> + routableConnectionCheckCount =
> routableConnectionCheckCount / 2;
> + }
> + }
> + }
> +
> + public synchronized double getPercentTimeRoutableConnection() {
> + if(hadRoutableConnectionCount == 0) {
> + return 0.0;
> + }
> + return ((double) hadRoutableConnectionCount) /
> routableConnectionCheckCount;
> + }
> }
>
> Modified: trunk/freenet/src/freenet/node/PeerNodeStatus.java
> ===================================================================
> --- trunk/freenet/src/freenet/node/PeerNodeStatus.java 2006-10-22
> 01:52:16 UTC (rev 10685)
> +++ trunk/freenet/src/freenet/node/PeerNodeStatus.java 2006-10-22
> 18:27:14 UTC (rev 10686)
> @@ -81,6 +81,8 @@
> private long totalBytesIn;
>
> private long totalBytesOut;
> +
> + private double percentTimeRoutableConnection;
>
> public PeerNodeStatus(PeerNode peerNode) {
> this.name = peerNode.getName();
> @@ -115,6 +117,7 @@
> this.privateDarknetCommentNote =
> peerNode.getPrivateDarknetCommentNote();
> this.totalBytesIn = peerNode.getTotalInputBytes();
> this.totalBytesOut = peerNode.getTotalOutputBytes();
> + this.percentTimeRoutableConnection =
> peerNode.getPercentTimeRoutableConnection();
> }
>
> /**
> @@ -332,4 +335,8 @@
> public long getTotalOutputBytes() {
> return totalBytesOut;
> }
> +
> + public double getPercentTimeRoutableConnection() {
> + return percentTimeRoutableConnection;
> + }
> }
>
> _______________________________________________
> cvs mailing list
> cvs at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL:
<https://emu.freenetproject.org/pipermail/devl/attachments/20061025/8948aa55/attachment.pgp>