auto-healing (deletion) of bad peer addresses during start-up

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@4437 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
orbiter 17 years ago
parent a981cd5ab7
commit f35a3794e0

@ -54,6 +54,7 @@ import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
@ -633,18 +634,19 @@ public final class yacySeedDB {
int pos = -1; int pos = -1;
String addressStr = null; String addressStr = null;
InetAddress seedIPAddress = null; InetAddress seedIPAddress = null;
HashSet<String> badPeerHashes = new HashSet<String>();
if (lookupConnected) { if (lookupConnected) {
// enumerate the cache and simultanous insert values // enumerate the cache and simultanous insert values
Iterator<yacySeed> e = seedsConnected(true, false, null, (float) 0.0); Iterator<yacySeed> e = seedsConnected(true, false, null, (float) 0.0);
while (e.hasNext()) { while (e.hasNext()) {
try { try {
seed = (yacySeed) e.next(); seed = (yacySeed) e.next();
if (seed != null) { if (seed != null) {
addressStr = seed.getPublicAddress(); addressStr = seed.getPublicAddress();
if (addressStr == null) { 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; continue;
} }
if ((pos = addressStr.indexOf(":"))!= -1) { if ((pos = addressStr.indexOf(":"))!= -1) {
@ -656,6 +658,10 @@ public final class yacySeedDB {
} }
} catch (UnknownHostException ex) {} } 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) { if (lookupDisconnected) {
@ -668,7 +674,8 @@ public final class yacySeedDB {
if (seed != null) { if (seed != null) {
addressStr = seed.getPublicAddress(); addressStr = seed.getPublicAddress();
if (addressStr == null) { if (addressStr == null) {
serverLog.logWarning("YACY","lookupByIP: address of seed " + seed.getName() + " is null."); serverLog.logWarning("YACY","lookupByIPDisconnected: address of seed " + seed.getName() + "/" + seed.hash + " is null.");
badPeerHashes.add(seed.hash);
continue; continue;
} }
if ((pos = addressStr.indexOf(":"))!= -1) { if ((pos = addressStr.indexOf(":"))!= -1) {
@ -680,6 +687,10 @@ public final class yacySeedDB {
} }
} catch (UnknownHostException ex) {} } 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) { if (lookupPotential) {

Loading…
Cancel
Save