Size: a a a

Scala User Group

2021 March 08

Oℕ

Oleg ℕizhnik in Scala User Group
а для чего нужно
источник

NV

Nikita Vilunov in Scala User Group
для произвольных типов данных
источник

Oℕ

Oleg ℕizhnik in Scala User Group
типа
Pipe A B
источник

NV

Nikita Vilunov in Scala User Group
nom в расте умеет с любыми инпутами
источник

NV

Nikita Vilunov in Scala User Group
Oleg ℕizhnik
типа
Pipe A B
да
источник

Oℕ

Oleg ℕizhnik in Scala User Group
эх
источник

Oℕ

Oleg ℕizhnik in Scala User Group
сделой такую
источник

NV

Nikita Vilunov in Scala User Group
ок
источник

P

Python in Scala User Group
Глупый вопрос: есть приложение, оно запускается в Resource[F, A]. У приложения есть состояние. Есть идея в том чтобы на graceful shutdown приложения это состояние записывать в базу данных.

У меня есть ощущение что записывать это состояние при cancel ресурса - это плохая идея. Но аргументов мало. Из того что приходит в голову: (1) тот кто создаёт Resource может не ожидать что его закрытие будет относительно долгим, (2) cancel ресурса - это конкурентная операция, со всеми выходящими последствиями, (3) надо использовать Resource.makeCase или вроде того чтобы не попасть на двойную ошибку (если ошибка случилась и в use и в самой записи в базу данных).

Уговорите (или отговорите) всё-таки (не)сливать состояние в базу на cancel ресурса.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
можно просто вспомнить, что этот аргумент называется "cleanup", а не cancel
источник

Oℕ

Oleg ℕizhnik in Scala User Group
и ощущения меняются сразу
источник

NM

Nikita Matveenko in Scala User Group
Хочется добавить что конкретный юз кейс это стейтфул обработка сообщений из кафки с сохранением промежуточного состояния и коммитом оффсетов :)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
1. "Тот, кто создаёт Resource может не ожидать, что закрытие будет долгим" - для описания того, что можно ожидать от процесса есть tagless final, или Reader capabilities
источник

АМ

Азамат Макарчук... in Scala User Group
Nikita Matveenko
Хочется добавить что конкретный юз кейс это стейтфул обработка сообщений из кафки с сохранением промежуточного состояния и коммитом оффсетов :)
Т.е. у вас exactly once ?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
2. нет никаких проблем, что финализующий процесс сложный, он вообще редко простым бывает, когда нужен
источник

NM

Nikita Matveenko in Scala User Group
Азамат Макарчук
Т.е. у вас exactly once ?
Нет, at least once
источник

АМ

Азамат Макарчук... in Scala User Group
Nikita Matveenko
Нет, at least once
Тогда почему нельзя коммитить только удачно обработанные офсеты, а если упадет - поднять и перечитать ?
источник

NM

Nikita Matveenko in Scala User Group
Если долго релизим ресурс то нас кафка брокер и так выкинет через конфигурируемое время из группы (дефолт 5 минут вроде), можно сделать таймаут же в релизе ресурса?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
да что-угодно можно делать в релизе ресурса
источник

Oℕ

Oleg ℕizhnik in Scala User Group
можно бесконечный процесс сделать
источник