2010-12-13 2 views
13

Ich benutze einen Scala Compilation Server. Dies hängt wahrscheinlich nicht mit meiner IDE IntelliJ IDEA zusammen, aber ich möchte Sie nur darüber informieren, dass ich den Scala Compilation Server über eine spezielle Run-Konfiguration in dieser IDE starte.Wie deaktiviere ich das Timeout des Scala Fast Compilation Servers (FSC)?

Nach einiger Zeit, ohne dass etwas kompiliert wurde, wird der Kompilierungsserver ohne Nachricht beendet. Normalerweise merke ich das nur, wenn ich etwas kompiliere und die Kompilierung fehlschlägt. Dann muss ich den Kompilierungsserver erneut starten, und natürlich dauert die nächste Kompilierung sehr lange, denn es ist wieder die erste Kompilation seit dem Start des Kompilierungsservers.

Wie deaktiviere ich diese Zeitüberschreitung? Ich schaute auf die Manpage für Scalac, und es scheint keine Option dafür zu geben. Ich kann VM-Optionen für diese Laufkonfiguration hinzufügen.

+0

Ich denke, Ihr Problem hat damit zu tun, dass der Compiler-Server sich beim nächsten Mal nicht automatisch neu startet. Ist das korrekt? –

+1

Es wäre großartig, wenn der Kompilierungsserver bei Bedarf automatisch (neu) startet. Wenn du weißt, wie ich das mache, sag es mir bitte. Es wäre jedoch immer noch besser, wenn es nach einiger Zeit nicht mehr von selbst aufhört. – Madoc

+1

Diese Frage sollte das Schlüsselwort [FSC (Fast Scala Compiler)] (http://www.scala-lang.org/docu/files/tools/fsc.html) enthalten, damit es einfacher ist, Google auszugeben. –

Antwort

6

Pass -max-idle 0 als Parameter öffnen sollten. Es wird jeden Abend sehr (sehr!) Funktionieren, und es sollte auf Scala 2.9.0 verfügbar sein, wenn es herauskommt. Es gibt jedoch keine Garantie dafür, dass sich der Name bis dahin nicht ändert.

+0

Das ist großartig, vielen Dank! – Madoc

6

Ich glaube nicht, dass Sie können. Hier ist ein Code-Schnipsel aus dem Kompilierung-Server:

object SocketServer 
{ 
    // After 30 idle minutes, politely exit. 
    // Should the port file disappear, and the clients 
    // therefore unable to contact this server instance, 
    // the process will just eventually terminate by itself. 
    val IdleTimeout = 1800000 
    val BufferSize = 10240 

    def bufferedReader(s: Socket) = new BufferedReader(new InputStreamReader(s.getInputStream())) 
    def bufferedOutput(s: Socket) = new BufferedOutputStream(s.getOutputStream, BufferSize) 
} 

Ich denke, Sie eine Feature-Anfrage in scala-lang.org

+0

Danke. Ein hardcoded Timeout, das nicht überschrieben werden kann, hmm. Nicht wirklich beste Praxis. Ich werde eine Feature-Anfrage öffnen. – Madoc

+2

Die [Timeout wird konfigurierbar sein] (http://alarmingdevelopment.org/?p=562#comment-58925) in der nächsten Version von FSC wie in einem Blogkommentar erwähnt. –