Проблема с Akka Futures в CF Buildpack cflinuxfs3 с помощью java-buildpack.git # v4.16.1 - PullRequest
0 голосов
/ 22 января 2019

Недавно мы обновили пакет сборки CF (Cloud Foundry) с cflinuxfs2 до cflinuxfs3.Это происходит с изменениями java buildpack с java-buildpack.git # v4.8 на java-buildpack.git # v4.16.1.Версия Java в контейнере CF изменена с 1.8.0_162-b12 на 1.8.0_192-b12.

После этого обновления мы столкнулись со странной проблемой с Akka Futures.Хотя несколько запросов отправляются в Akka Future одновременно, выполнение запросов в Future происходит последовательно.Вызывающая точка не блокируется, но выполнение Future для второго запроса блокируется до завершения выполнения первого запроса Future.

Пример вывода в cflinuxfs2: (оба запроса выполняются одновременно)

Создание… одного

будущего запроса получено: один

Создание… двух

будущего запроса получено: два

будущий запрос завершен: один

будущий запрос завершен: два

успех - один

успех - два

Пример вывода в cflinuxfs3: (Оба запроса отправленыодновременно, но выполнение происходит последовательно)

Создание… одного

будущий запрос получен: один

Создание… двух

будущий запрос завершен: один

success- one

будущий запрос получен: два

будущий запрос завершен: два

success- два

Пример кода:

  def testFuture(id: String): Future[Boolean] = Future {
    println("future request received:" + id)
    Thread.sleep(10000)
    println("future request finished:" + id)
    true
  }

  def retValueValidation(id: String, retValue: Future[Boolean]) {
    retValue.onComplete {
      case scala.util.Success(true) =>
        println("success- " + id)
      case _ =>
        println("fail- one")
    }
  }

  println("Creating...one")
  val retValue = testFuture("one")
  retValueValidation("one", retValue)

  println("Creating...two")
  val retValue1 = testFuture("two")
  retValueValidation("two", retValue1)
...