2010-12-13 38 views
13

J'utilise un serveur de compilation Scala. Ceci n'est probablement pas lié à mon IDE IntelliJ IDEA, mais je vais juste vous informer que je démarre le serveur de compilation Scala via une configuration d'exécution spéciale dans cet IDE.Comment désactiver le délai d'attente du serveur Scala Fast Compilation (FSC)?

Après un certain temps sans rien compiler, le serveur de compilation s'arrête, sans aucun message. Habituellement, je remarque seulement ceci quand j'essaye de compiler quelque chose et la compilation échoue. Ensuite, j'ai besoin de redémarrer le serveur de compilation, et bien sûr la prochaine compilation prend beaucoup de temps, car c'est une fois de plus la première compilation depuis le démarrage du serveur de compilation.

Comment désactiver ce délai? J'ai regardé la page de manuel pour scalac, et il semble y avoir aucune option pour cela. Je peux ajouter des options VM pour cette configuration d'exécution.

+0

Je pense que votre problème est lié au fait que le serveur du compilateur ne se redémarre pas automatiquement la prochaine fois que vous en avez besoin. Est-ce exact? –

+1

Ce serait génial si le serveur de compilation (re) démarre automatiquement si nécessaire. Si tu sais comment je peux faire ça, dis-le moi s'il te plaît. Cependant, il serait encore mieux si elle ne s'arrêterait pas d'elle-même après un certain temps. – Madoc

+1

Cette question doit contenir le mot-clé [FSC (Fast Scala Compiler)] (http://www.scala-lang.org/docu/files/tools/fsc.html) afin qu'il soit plus facile de l'extraire. –

Répondre

6

passe -max-idle 0 comme paramètre. Cela marchera très très (très!) Tous les soirs, et il devrait être disponible sur Scala 2.9.0 quand il sortira. Cependant, il n'y a aucune garantie que le nom ne changera pas jusque-là.

+0

C'est génial, merci beaucoup! – Madoc

6

Je ne pense pas que vous le pouvez. Voici un extrait de code à partir du serveur de compilation:

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

Je pense que vous devriez ouvrir une demande de fonctionnalité dans scala-lang.org

+0

Merci. Un timeout codé en dur qui ne peut pas être ignoré, hmm. Pas vraiment la meilleure pratique. Je vais ouvrir une demande de fonctionnalité. – Madoc

+2

Le [timeout sera configurable] (http://alarmingdevelopment.org/?p=562#comment-58925) dans la prochaine version de FSC comme mentionné dans un commentaire de blog. –