Update of /cvsroot/freenet/freenet/src/freenet
In directory sc8-pr-cvs1:/tmp/cvs-serv17715/freenet
Modified Files:
ConnectionHandler.java OpenConnectionManager.java Peer.java
Log Message:
Blacklist connections who are rapidly failing a lot, this should help with a lot of
the CPU overload on 6205, also fix the hashCode from tcpAddress and therefore from
Peer, this could have been another whole bug of it's own.
Index: ConnectionHandler.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/ConnectionHandler.java,v
retrieving revision 1.159
retrieving revision 1.160
diff -u -r1.159 -r1.160
--- ConnectionHandler.java 20 Sep 2003 19:58:59 -0000 1.159
+++ ConnectionHandler.java 23 Sep 2003 00:55:09 -0000 1.160
@@ -1246,6 +1246,7 @@
public void queuedClose() {
logDEBUG = Core.logger.shouldLog(Logger.DEBUG,this);
if(logDEBUG) logDEBUG("Queued close", true);
+ ocm.blackList(peer);
terminate();
if(logDEBUG) logDEBUG("Terminated in queuedClose()");
}
Index: OpenConnectionManager.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/OpenConnectionManager.java,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -r1.106 -r1.107
--- OpenConnectionManager.java 19 Sep 2003 17:18:04 -0000 1.106
+++ OpenConnectionManager.java 23 Sep 2003 00:55:10 -0000 1.107
@@ -8,6 +8,7 @@
import freenet.support.Logger;
import freenet.support.MultiValueTable;
import freenet.support.LRUQueue;
+import freenet.support.BlackLRUQueue;
import freenet.support.io.NIOInputStream;
import freenet.transport.tcpConnection;
@@ -53,6 +54,8 @@
private Object openConnsSync = new Object();
private final LRUQueue lru = new LRUQueue();
+ // Queue of blacklisted peers
+ private final BlackLRUQueue blq = new BlackLRUQueue(60000,100,3);
private int maxConnections = -1;
private boolean logDEBUG = true;
@@ -318,6 +321,13 @@
}
}
+ public void blackList(Peer p){
+ Core.logger.log(this, "blackListing " + p, Logger.DEBUG);
+ if ( p != null && p.getIdentity() != null && p.getAddress() != null ) {
+ blq.push(p);
+ }
+ }
+
/**
* Creates a new Connection which is started and added.
* @param c The Core to connect from
@@ -340,24 +350,36 @@
boolean updatedRefcount = false;
boolean weStarted = false;
+ blq.clean();
+ Core.logger.log(this, "Current blackListQueue size: " + blq.size() +
+ ", Checking " + p,
+ Logger.DEBUG);
+ if ( blq.isBlackListed(p) ) {
+ Core.logger.log(this, "Attempted to open connection for blackListed " +
+ p,Logger.DEBUG);
+ ConnectFailedException e =
+ new ConnectFailedException(p.getAddress(),
+ p.getIdentity(),
+ "BlackListed",
+ true);
+ Core.logger.log(this, "Failed to connect: " + e, Logger.DEBUG);
+ throw e;
+ }
try {
synchronized(connectionJobs) {
- while(ct == null || ct.done) {
- ct = (ConnectionJob)(connectionJobs.get(p));
- if(ct != null && ct.done) {
- if(connectionJobs.get(p) == ct) {
- connectionJobs.remove(p);
- continue;
- }
- }
- break;
- }
- if(ct != null) {
- Core.logger.log(this, "Got "+ct+", waiting on
it",
- Logger.DEBUG);
- updatedRefcount = true;
- ct.incRefcount();
- } else {
+ if ( ( ct = (ConnectionJob)connectionJobs.get(p) ) != null ) {
+ if ( ct.done ) {
+ connectionJobs.remove(p);
+ ct = null;
+ } else {
+ Core.logger.log(this, "Got "+ct+", waiting on it",
+ Logger.DEBUG);
+ updatedRefcount = true;
+ ct.incRefcount();
+ }
+ }
+
+ if(ct == null) {
weStarted = true;
ct = new ConnectionJob(c, p);
connectionJobs.put(p, ct);
Index: Peer.java
===================================================================
RCS file: /cvsroot/freenet/freenet/src/freenet/Peer.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Peer.java 12 Sep 2003 01:52:25 -0000 1.3
+++ Peer.java 23 Sep 2003 00:55:10 -0000 1.4
@@ -58,7 +58,7 @@
}
public int hashCode() {
- return id.hashCode() ^ addr.hashCode();
+ return id.hashCode() ^ addr.hashCode();
}
public String toString() {
_______________________________________________
cvs mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/cvs