De:Urldbcleanup

Aus YaCyWiki
Wechseln zu: Navigation, Suche

Fehlerbeschreibung

Tritt im laufende Betrieb von YaCy häufig eine MalformedURLException beim Zugriff auf die URL-Datenbank auf, sollte die Datenbank repariert werden, um die fehlerhafte URLs zu korrigieren:

SCHWERWIEGEND: INTERNAL ERROR in plasmaLURL.entry/1: 
java.net.MalformedURLException: no protocol:
X://www.muenchen.de/Marktplatz/04a_T-Shirts_Muenchen/136144/
       at java.net.URL.<init>(URL.java:567)
       at java.net.URL.<init>(URL.java:464)
       at java.net.URL.<init>(URL.java:413)
       at de.anomic.plasma.plasmaCrawlLURL$Entry.<init>(plasmaCrawlLURL.java:474)
       at de.anomic.plasma.plasmaCrawlLURL$kiter.next(plasmaCrawlLURL.java:750)
       [...]

Fehlerbehebung

Ersteinmal muss YaCy beendet werden. Dann im YaCy Hauptverzeichnis folgenden Befehl aufrufen:

Für Linux:

java -classpath classes:lib/commons-collections.jar:lib/commons-pool-1.2.jar yacy -urldbcleanup

Für Windows:

java -classpath classes;lib/commons-collections.jar;lib/commons-pool-1.2.jar yacy -urldbcleanup

Funktionsbeschreibung

Nach dem Start der Funktion urldbcleanup wird über die gesamte URL-Datenbank (urlHash.db) iteriert, um alle fehlerhaften URLs zu ermitteln und in einer temporären Liste zu sammeln. Achtung: Wenn die URL-DB sehr groß ist kann dieser Vorgang mitunter mehrere Stunden dauern.

Nachdem alle URLs auf Fehler überprüft wurden, wird die temporäre Liste mit fehlerhaften URLs abgearbeitet. Konkret wird für jede fehlerhafte URL versucht die Protokoll-Angabe zu Berichtigen und danach einen HTTP HEAD Request durchzuführen um die Korrektheit und Verfügbarkeit der URL zu überprüfen. Wird der Request vom Server mit einem Fehler beantwortet wird die betreffende URL aus der Datenbank gelöscht, andernfalls kann die fehlerhafte URL der DB durch die korrigierten URL ersetzt werden. Achtung: Anders als im Normalbetrieb von YaCy wird für die Durchführung dieses Http-Requests kein externer Proxy verwendet.

Nach der Beendigung der Funktion urldbcleanup sollten keine fehlerhaften URLs mehr in der URL-Datenbank vorhanden sein.