2013-10-18 14 views
5

Also, ich habe mehrere Jobs auf Hudson, die 3-6 Stunden dauern. Die Slave-Maschinen sind eine Vielzahl verschiedener Windows-Betriebssysteme, die auf VMs ausgeführt werden. Manchmal wird es einen kleinen Schluckauf geben, der dazu führt, dass ein Sockel, der seit 6 Stunden geöffnet ist, geschlossen wird. (Das scheint nicht verrückt selbst bei perfekter Vernetzung) Und so, ich am Ende mit einem Stacktrace zu dieser zeigt:Ist es möglich, Hudson widerstandsfähiger gegenüber kleineren Netzwerk-Schluckauf zu machen?

hudson.remoting.RequestAbortedException: hudson.remoting.RequestAbortedException: java.net.SocketException: socket closed 

Gibt es eine Plugin oder andere Weise, die ich dieses äußerst lästiges Problem beheben könnte? Wenn du 3 Stunden durch einen 4-Stunden-Build gehst und es deswegen versagt, ist es ein bisschen ärgerlich.

+0

Die Anzahl der Fehlerberichte und Mailinglisten-Postings, die ich mit diesem genauen Problem gesehen habe, ist atemberaubend und nicht eine einzige Antwort mit einem Fix oder sogar Hinweis darauf, was das Problem ist. Nur "ich auch" .. Ich hoffe, Stackoverflow kann mir eine Art von Antwort geben und dienen als Referenz für zukünftige Googler – Earlz

Antwort

1

Vielleicht off Thema, aber haben Sie einen alternativen CI-Server in Betracht gezogen, wie JetBrains TeamCity? Ich benutze es seit 4 Jahren für .NET-Projekte und empfehle es sehr.

+0

In erster Linie kann nicht aufgrund der vorhandenen Infrastruktur. Wahrscheinlich bauen 10 Jenkins Sklaven, etwa 40 separate Builds, die sich weitgehend auf einige Jenkins-Plugins verlassen. Es wäre einfach zu teuer, das zu tun. – Earlz

0

Wenn Build für 6 Stunden läuft, dann würde es fehlschlagen, wenn die Verbindung zwischen Master-Slave ausfällt. Lösung besteht darin, eine benutzerdefinierte Logik für die Verbindung mit dem Slave zu erstellen, und Hudson bietet hierfür eine Option an. Überprüfen Sie diesen Link: http://wiki.hudson-ci.org/display/HUDSON/Distributed+builds#Distributedbuilds-WriteyourownscripttolaunchHudsonslaves

Ein benutzerdefiniertes Skript mit Wiederholungslogik sollte der Ausweg sein.