Тапир с загрузкой файла HTTP Akka - отправка «раннего» ответа 2xx до того, как был получен конец запроса

Для сервиса использую тапир + акка http. Одна из конечных точек загружает файлы.

      val load
      : Endpoint[Source[ByteString, Any], Any, Any, AkkaStreams] =
    endpoint
      .post
      .in("load")
      .in(streamBody(AkkaStreams)(
        Schema(Schema.schemaForByteArray.schemaType),
        CodecFormat.OctetStream()
      ))
      .out(???)

Gettin предупредить

Отправка «раннего» ответа 2xx до того, как получен конец запроса

Как мне справиться с этим с помощью тапира?

1 ответ

Это проблема с akka-http: https://github.com/akka/akka-http/issues/2455

Ты используешь Sourceкусков в вашем коде? Akka-http потребляет сообщения, когда он потребляется, он отправляет ответ, даже не потребляя, который приходит после.

не потребляется, messageEndPending установлен на true отсюда и предупреждение о раннем реагировании.

Я обошел это, отфильтровав LastChunk и объединяя его до конца потока - после и, таким образом, заставляя akka-http потреблять MessageEnd.

Другие вопросы по тегам