модели нет никакого супервайзера над ошибками, если таковая случилась — то весь стрим кладется, и данные, которые в него ушли, но еще не были обработаны, теряются?
Написал такой пример.
https://scastie.scala-lang.org/vagroz/d6M0zseVTya8mY3SkuLFvQ/5
В очереди лежат чиселки от 1 до 52, оттуда делается стрим с размерами чанков 8. Далее он прогоняется через ZTrancducer, который на числе, кратном 5 кидает ошибку, а остальные числа просто распечатывает. В конце тупо runDrain , и на этом результирующем эффекте retry.
Получаю вывод:
Data: 1
Data: 2
Data: 3
Data: 4
Data: 9
Data: 17 [...]
Получается, в transducer попал первый чанк 1-8, 1-4 он вывел, на 5 упал, 6-8 птерялись. Стрим завершился, сработал retry, из очереди вытянулся следующий чанк 9-16, 9 распечатал, на 10 упал, 11-16 потерялись. И так далее
Вопрос: можно ли, рассматривая transducer как черный ящик, вывести все числа от 1 до 52 (кроме кратных 5)?
А разве там нет .catchAll и .sandbox?
sandbox нет, catchAll требует Throwable => ZStream, запихнул в нее исходный же стрим, че т все зависло. Попробую ее еще повертеть, спасибо
Обсуждают сегодня