Akka Stream испускает случайное количество предметов - PullRequest
1 голос
/ 19 июня 2019

У меня есть файл, который состоит из 66564 строк, которые я разделяю на каждую строку. Мне нужно будет сгруппировать эти строки на основе строки, которая указывает на конец записи. Я собираюсь использовать splitAfter для этого, но сейчас я уже застрял с этим:

    val numLines = AtomicLong(0)
    FileIO.fromPath(Paths.get(file))
            .via(Framing.delimiter(ByteString.fromString("\n"), Int.MAX_VALUE, true))
            .map { it.decodeString(StandardCharsets.UTF_8) }
            .map {
                numLines.incrementAndGet()
                it
            }
            .to(Sink.ignore())
            .run(materializer)
            .toCompletableFuture()
            .get()

    println(numLines.get())

Я ожидал, что это вернет количество строк (66564), однако он возвращает разные значения при каждом запуске (для одного и того же файла). Значения обычно находятся между 64000 и 66000.

Я уверен, что это какая-то мелочь, но я смотрю на это часами и просто не понимаю, почему это приводит к случайным результатам ...

...