Author: orbiter
Date: 2008-02-03 19:42:25 +0100 (Sun, 03 Feb 2008)
New Revision: 4437

Modified:
   trunk/source/de/anomic/yacy/yacySeedDB.java
Log:
auto-healing (deletion) of bad peer addresses during start-up

Modified: trunk/source/de/anomic/yacy/yacySeedDB.java
===================================================================
--- trunk/source/de/anomic/yacy/yacySeedDB.java 2008-02-03 18:36:44 UTC (rev 
4436)
+++ trunk/source/de/anomic/yacy/yacySeedDB.java 2008-02-03 18:42:25 UTC (rev 
4437)
@@ -54,6 +54,7 @@
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.Map;
@@ -633,18 +634,19 @@
         int pos = -1;
         String addressStr = null;
         InetAddress seedIPAddress = null;        
+        HashSet<String> badPeerHashes = new HashSet<String>();
         
         if (lookupConnected) {
             // enumerate the cache and simultanous insert values
             Iterator<yacySeed> e = seedsConnected(true, false, null, (float) 
0.0);
-
             while (e.hasNext()) {
                 try {
                     seed = (yacySeed) e.next();
                     if (seed != null) {
                         addressStr = seed.getPublicAddress();
                         if (addressStr == null) {
-                               serverLog.logWarning("YACY","lookupByIP: 
address of seed " + seed.getName() + " is null.");
+                               
serverLog.logWarning("YACY","lookupByIP/Connected: address of seed " + 
seed.getName() + "/" + seed.hash + " is null.");
+                               badPeerHashes.add(seed.hash);
                                continue; 
                         }
                         if ((pos = addressStr.indexOf(":"))!= -1) {
@@ -656,6 +658,10 @@
                     }
                 } catch (UnknownHostException ex) {}
             }
+            // delete bad peers
+            Iterator<String> i = badPeerHashes.iterator();
+            while (i.hasNext()) try {seedActiveDB.remove(i.next());} catch 
(IOException e1) {e1.printStackTrace();}
+            badPeerHashes.clear();
         }
         
         if (lookupDisconnected) {
@@ -668,8 +674,9 @@
                     if (seed != null) {
                         addressStr = seed.getPublicAddress();
                         if (addressStr == null) {
-                                serverLog.logWarning("YACY","lookupByIP: 
address of seed " + seed.getName() + " is null.");
-                                continue;
+                            
serverLog.logWarning("YACY","lookupByIPDisconnected: address of seed " + 
seed.getName() + "/" + seed.hash + " is null.");
+                            badPeerHashes.add(seed.hash);
+                            continue;
                         }
                         if ((pos = addressStr.indexOf(":"))!= -1) {
                             addressStr = addressStr.substring(0,pos);
@@ -680,6 +687,10 @@
                     }
                 } catch (UnknownHostException ex) {}
             }
+            // delete bad peers
+            Iterator<String> i = badPeerHashes.iterator();
+            while (i.hasNext()) try {seedActiveDB.remove(i.next());} catch 
(IOException e1) {e1.printStackTrace();}
+            badPeerHashes.clear();
         }
         
         if (lookupPotential) {

_______________________________________________
YaCy-svn mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/yacy-svn

Antwort per Email an