Conflicting initiator properties in CrawlStacker.java

Hier finden YaCy User Hilfe wenn was nicht funktioniert oder anders funktioniert als man dachte. Bei offensichtlichen Fehlern diese bitte gleich in die Bugs (http://bugs.yacy.net) eintragen.
Forumsregeln
In diesem Forum geht es um Benutzungsprobleme und Anfragen für Hilfe. Wird dabei ein Bug identifiziert, wird der thread zur Bearbeitung in die Bug-Sektion verschoben. Wer hier also einen Thread eingestellt hat und ihn vermisst, wird ihn sicherlich in der Bug-Sektion wiederfinden.

Conflicting initiator properties in CrawlStacker.java

Beitragvon Quix0r » Mo Jun 01, 2009 5:03 pm

Die besagte Warnung erhaelt man, wenn ein Crawl per Proxy gestartet wurde und (vermutlich) vom lokalen Crawler aufgegriffen wurde, um es zu crawlen.

Der momentane Stacker ist so beschaffen, dass er alle Variablen local,global,remote und proxy deklariert und gleich sofort prueft, ob die Bedingungen fuer den jeweiligen Crawler-Modus hinkommen. Dies kann natuerlich dazu fuehren, dass ein wie anfangs beschriebener Crawl mehrere 'Modi' erhaelt, weil sowohl der Proxy ihn starten, als auch der lokale Crawler (vermutlich) ihn aufgreifen und ebenfalls ihn als 'gestartet' setzen.

Ich tippe hier mal darauf, dass der Crawler den 'Modi' local,remote,global und hproxy nicht erkennt, sondern einfach seinen aktuellen Modi hinzusetzt. Soweit bin ich jedoch noch nicht mit meiner Analyse, wo das sein koennte.

Mein Patch schreibt erstmal das Initialisieren aller 4 boolischen Variablen so um, dass nur eine auf true gesetzt werden kann, was auch Sinn macht. Die konfliktierenden Modi sollten aber dennoch gefixt werden.

Zudem schlage ich anstelle von 'return error;' - das befindet sich genau ein if()-Block - ein 'throw new MySpecialException(error); vor, wobei die Fehlermeldung an die Exception uebergeben wird und somit auch anderswo weiter verarbeitet werden kann. Dies sollte den Code etwas lueften und flexibler machen. Zudem ist es eher ueblich, so auf Fehler zu reagieren indem explizite Exceptions geworfen und gefangen werden. :)

EDIT: Das fixe ich gerade, alle "catch Exception" eliminieren, soweit es geht und leere Catch-Bloecke wenigstens mit einem Logging versehen.
Edit2: Beitrag aufgraeumt, da vieles out-dated drinne stand.
Zuletzt geändert von Quix0r am Do Apr 15, 2010 9:58 pm, insgesamt 4-mal geändert.
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: [PATCH] Conflicting initiator properties in CrawlStacker.jav

Beitragvon Quix0r » Mo Jun 01, 2009 5:13 pm

Kleine Anmerkung dazu noch:

Man kann auch eine eigene Exception schreiben, die die RuntimeException erweitert und diese dann werfen. Z.B. InvalidModeException koennte sie heissen:

Code: Alles auswählen
class InvalidModeException extends RuntimeException {
}


Dies macht auf den ersten Blick wenig Sinn, aber wenn man bedenkt, dass man keine generellen Exceptions werfen sollte, sondern explizite, damit diese auch explizit gefangen und bearbeitet werden koennen, so macht dies doch Sinn. Letzterer Hinweis stand so in meinem SCJP-Buch!

Nie generelle Exceptions (was ja RuntimeException ist), sondern explizite(konkrete). Denn vielleicht so die eine konkrete Exception anders gehandhabt werden als je andere konkrete. Dann kannst du nicht die gemeinsame "Super-Exception" fangen.

Das habe ich uebrigens wo in deinem Code gesehen:
Code: Alles auswählen
try {
  someFooCall();
} catch (Exception e) {
  e.printBacktrace();
}

Das ist wegen dem oben besagten kein guter Stil und wird von Sun auch nicht empfohlen.

Dann noch etwas (noch boeseres):"
Code: Alles auswählen
try {
  someBarCall();
} catch (SomeConcreteException e) {
}

Das ist sehr boese, da du die Exception einfach "isst" aber sie nicht handhabst. Somit verhallt sie irgentwo in der JVM und kann nie wirklich gefixt werden. Exceptions sind und bleiben Ausnahmen und sollten daher gehandhabt werden. Wenigstens solltest du sie loggen!
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: [PATCH] Conflicting initiator properties in CrawlStacker.jav

Beitragvon Lotus » Di Jun 02, 2009 5:51 pm

Du den angeratenen Exceptions:
In YaCy ist es häufig so, dass ein Error als String zurückgegeben wird, wenn was falsch läuft. Wenn alles richtig ist, wird null zurückgegeben. Oft sind das keine tragischen Sachen. Sehe es einfach als einen erweiterten bool-Modus.
Beispiel: de.anomic.plasma.plasmaSwitchboard.dhtShallTransfer()
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: [PATCH] Conflicting initiator properties in CrawlStacker.jav

Beitragvon Quix0r » Di Jun 02, 2009 5:55 pm

Ja, mag ja angehen. :) Aber die Exceptions sollen halt die Fehlerrueckgaben abloesen, da diese den Code flexibler machen. Ich gebe halt Sun's Empfehlung weiter.

Naja, so ganz so genau scheinen dies aber auch nicht zu nehmen. Throwable ist laut meinem SCJP-Buch eine Klasse. Das 'able' am Ende des Namens deutet aber per Sun's eigener Namenskonvention auf ein Interface hin? Oder wurde das mittlerweile beseitigt?
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: [PATCH] Conflicting initiator properties in CrawlStacker.jav

Beitragvon Quix0r » Mi Jun 03, 2009 12:24 pm

Hier ein uralter Beitrag im Bug-Forum dazu: (Thema)
viewtopic.php?f=6&t=2043&hilit=
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: Conflicting initiator properties in CrawlStacker.java

Beitragvon Quix0r » Mo Mär 22, 2010 10:13 pm

Ich grabe den Beitrag wieder aus, da die besagte Meldung nun tonnenweise (~90.000x ueber alle 20 Logbuecher verteilt) vorkommt und die Festplatte dabei nicht still steht. :(

Kann man hier nicht etwas machen? Ich vermute, dass er den selben Eintrag bereits oefters so angekreidet hat. Kann hier nicht einfach ein property gesetzt werden und gut ist?

Ich weiss auch, woher die vielen kommen, da ich 10 rekursive wget-Prozesse hatte, auf unterschiedlichen Seiten versteht sich. :) Ich will ja kein Blacklisting von YaCy herausprovozieren... 8-)

Der noetige grep-Befehl dazu:
Code: Alles auswählen
grep "STACKCRAWL URL" DATA/LOG/yacy*.log|grep "has conflicting initiator properties" --count
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld

Re: Conflicting initiator properties in CrawlStacker.java

Beitragvon Orbiter » Mo Mär 22, 2010 11:26 pm

scheint mir so zu sein dass diese Meldung nur kommen kann wenn du zwischen internet/intranet Netzen gewechselt hast aber dabei das Crawl Profile beibehalten hast. Letzteres ist eigentlich nicht mehr möglich seit es die Segmente gibt, denn da ist das so gemacht dass die Crawl Profile nicht beibehalten werden beim Switch sondern den Segmenten zugeordnet sind. Ich habe so eine Meldung auch überhaupt nicht und kann den Fehler daher nicht nachvollziehen.

Zur Fehlebehebung bitte eine Vorgehensbeschreibung erstellen wie ich von einem frischen Peer aus zu dieser meldung hin komme, ich wüsste nämlich nicht wie.
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Conflicting initiator properties in CrawlStacker.java

Beitragvon Quix0r » Di Mär 23, 2010 12:34 am

Okay, anbei das besagte "massenhafte wget-Script". Wenn du alles entpackt hast, einfach YaCy im Hintergrund haben und alle der Reihe nach starten. Du brauchst mehr RAM, da einige wget-Prozesse sich aufblaehen werden, wegen der gespeicherten, noch zu ladenen Links.

Es sollte unter http://127.0.0.1:8080/ProxyIndexingMonitor_p.html alle Optionen bis auf ".yacy domains only" aktiv sein, prefetch depth=3, ich habe 10 GB Cache (etwas zu viel?)

Dann einfach abwarten, was passiert. :) Sollte nicht laenger als ein oder zwei Stunden dauern, bis du die ersten Eintraege hast.
Dateianhänge
wget-mass.zip
mass-wget :) :) :)
(8.24 KiB) 18-mal heruntergeladen
Quix0r
 
Beiträge: 1345
Registriert: Di Jul 31, 2007 9:22 am
Wohnort: Krefeld


Zurück zu Fragen und Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 2 Gäste