2010-12-13 16 views
13

Używam serwera kompilacji Scala. Prawdopodobnie nie jest to związane z moją IDE IntelliJ IDEA, ale po prostu poinformuję, że uruchamiam serwer kompilacyjny Scala poprzez specjalną konfigurację uruchamiania w tym IDE.Jak wyłączyć limit czasu serwera Scala Fast Compilation (FSC)?

Po pewnym czasie bez kompilacji, serwer kompilacji kończy działanie, bez żadnego komunikatu. Zazwyczaj zauważam to tylko wtedy, gdy próbuję coś skompilować, a kompilacja się nie powiedzie. Następnie muszę ponownie uruchomić serwer kompilacji i oczywiście kolejna kompilacja zajmuje dużo czasu, ponieważ jest to po raz pierwszy kompilacja od momentu uruchomienia serwera kompilacji.

Jak wyłączyć ten limit czasu? Spojrzałem na stronę podręcznika dla skalaka i wydaje się, że nie ma na to opcji. Mogę dodać opcje VM dla tej konfiguracji uruchamiania.

+0

Myślę, że twój problem związany jest z tym, że serwer kompilatora nie uruchamia się samoczynnie przy następnym uruchomieniu. Czy to jest poprawne? –

+1

Byłoby wspaniale, gdyby serwer kompilacji został (ponownie) uruchomiony automatycznie w razie potrzeby. Jeśli wiesz, jak to zrobić, proszę powiedz mi. Jednak byłoby jeszcze lepiej, gdyby po pewnym czasie sam się nie zatrzymał. – Madoc

+1

To pytanie powinno zawierać słowo kluczowe [FSC (Fast Scala Compiler)] (http://www.scala-lang.org/docu/files/tools/fsc.html), aby ułatwić Google. –

Odpowiedz

6

Przełęczy -max-idle 0 jako parametr. Będzie działać na bardzo (bardzo!) Niedawnym wieczornym, i powinien być dostępny na Scali 2.9.0, gdy wyjdzie. Jednak nie ma gwarancji, że nazwa nie zmieni się do tego czasu.

+0

To niesamowite, wielkie dzięki! – Madoc

6

Nie sądzę, że możesz. Oto fragment kodu z serwera kompilacji:

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) 
} 

myślę, że należy otworzyć żądanie cechą w scala-lang.org

+0

Dzięki. Naprawiony czas, którego nie można przesłonić, hmm. Niezupełnie najlepsza praktyka. Otworzę prośbę o funkcję. – Madoc

+2

[Limit czasu będzie konfigurowalny] (http://alarmingdevelopment.org/?p=562#comment-58925) w następnej wersji FSC, jak wspomniano w komentarzu na blogu. –