Я создал рабочее приложение, но иногда, когда я меняю вещи и нажимаю кнопку "Перезагрузка" в своем браузере, приложение занимает навсегда время (300000 мс или 5 минут!). После этого я получаю следующее исключение в браузере:
java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds]
scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111)
scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
scala.concurrent.Await$.result(package.scala:111)
play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:123)
play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:121)
play.runsupport.Reloader.reload(Reloader.scala:295)
play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:122)
play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scalscala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Ошибка в консоли:
[error] application -
[info]
[info] ! Internal server error, for (GET) [/] ->
[info]
[info] java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds]
[info] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.Await$.result(package.scala:111) ~[scala-library-2.11.1.jar:na]
В большинстве случаев я просто останавливаю активатор (CTRL + D в консоли), а затем перезапускаю его с помощью "запуска активатора", приложение работает тогда.
Я пробовал его с активатором 1.3.2 и даже с автономным дистрибутивом на разных компьютерах, но безрезультатно.
Я использую Scala IDE 4.0 (Eclipse).
[EDIT]: Я также пробовал activator ~run
, поэтому изменения будут скомпилированы как можно скорее.
Пример для времени ожидания:
(я просто добавил первую строку $document.ready(function()
и соответствующие скобки в конце). После того, как я получил таймаут, я остановил активатор, запускаемый CTRL + D, и перезапустил его с помощью activator run
. Я не изменил ни одного моего кода! Когда начало было завершено, моя программа функционировала по назначению.
<script>
$(document).ready(function() {
$('#icon').click(function() {
var $this = $(this);
$this.css("color","orange");
var num = $('#num');
var currentNumber = num.text().length ? parseInt(num.text()) : 0;
num.text(currentNumber + 1);
});
});
</script>
Я получаю эти таймауты очень часто, например, в 90% моих изменений кода, что очень раздражает.
Итак, как я могу исправить очень длинный тайм-аут?
Кажется, я нашел ответ сам во время поиска в редакторе в своем первом сообщении. Я пишу это, чтобы он помог кому-то с аналогичной проблемой:
В активаторе 1.3.2 добавлена команда "fork in run" -settting. Таким образом, пользовательский интерфейс активатора добавляет строку fork in run := true
к вашему build.sbt
в проекте.
Просто удалите, закомментируйте или измените строку на fork in run := false
. Это фиксировало мои тайм-ауты.
Стоит упомянуть: компиляция моего проекта теперь намного быстрее, чем раньше.
Я до сих пор не понимаю, почему тайм-ауты случаются, если у кого-то есть более глубокое понимание этого, я бы с удовольствием его услышал. Но на данный момент у меня есть обходное решение.
~run
она должна быть немного быстрее, так как она пытается скомпилировать небольшие изменения как можно скорее.~run
не помог, я все равно получил тайм-аут.