Ich habe eine alte Topologie, die eine Weile läuft. Aber in letzter Zeit muss ich diese Topologie aktualisieren und habe sie dadurch getötet. Wenn ich versuche, die aktualisierte Topologie vorlegen zu stürmen, solche Ausnahme aufgetreten:lokale Klasse inkompatibel im Sturm
java.io.InvalidClassException: com.weibo.security.storm.bolt.IpCountBolt; local class incompatible: stream classdesc serialVersionUID = -5336119852024782309, local class serialVersionUID = -572783398581060861
Also, ich den Sturm Prozess getötet und versuchte, alles zu Sturm mit Bezug zu löschen, einschließlich storm.log.dir
, storm.local.dir
, der gesamten Knoten /storm
in Tierpfleger und das gesamte Verzeichnis /tmp
. Als ich jedoch den Sturm startete und die Topologie erneut einreichte, ist diese Ausnahme immer noch vorhanden.
Ich schaffte es, sie zu umgehen, indem Sie den Klassennamen in meiner Topologie ändern, aber dies sollte nicht die richtige Lösung sein.
Ich verstehe, wie es InvalidClassException verursacht. Aber ich glaube, dass ich alle Daten entfernt habe, die sich auf die alte Topologie beziehen. Warum ist immer noch da? Gibt es irgendwo anders, das ich vermisse, das den Cache für alte Topologie verstecken könnte?
Überprüfen Sie, um (1) zu sehen, definiert die Quelle für die Klasse sogar den Wert der seriellen Version (es wählt einen zufälligen aus wenn nicht) und (2) ist es möglich, dass du irgendwo eine neuere Version der Klasse aufnimmst? –
(1) Nein, es wurde standardmäßig ein zufälliger Wert verwendet. (2) Was meinst du damit, eine neuere Version der Klasse "abzuholen"? –