Size: a a a

Scala User Group

2021 March 08

NM

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

Oℕ

Oleg ℕizhnik in Scala User Group
3. Я совсем не понял довода про двойную обработку ошибок. Если в use произошла проблема при общении с базой данных, но произошла потому что что-то не то хотели с базой данных сделать, почему не попробовать финализировать ещё раз
источник

λ

λoλcat in Scala User Group
Oleg ℕizhnik
да что-угодно можно делать в релизе ресурса
Ага, тока гарантий никаких нет
источник

λ

λoλcat in Scala User Group
Если релиз окончился неуспешно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
λoλcat
Если релиз окончился неуспешно
нет
источник

Oℕ

Oleg ℕizhnik in Scala User Group
но попытаться стоит
источник

P

Python in Scala User Group
Oleg ℕizhnik
3. Я совсем не понял довода про двойную обработку ошибок. Если в use произошла проблема при общении с базой данных, но произошла потому что что-то не то хотели с базой данных сделать, почему не попробовать финализировать ещё раз
В смысле что ошибку можно потерять если ошибка второй раз произойдёт во время закрытия ресурса. Cats Effect такие ошибки тупо кидает в stdout и забывает про них.
источник

λ

λoλcat in Scala User Group
Python
В смысле что ошибку можно потерять если ошибка второй раз произойдёт во время закрытия ресурса. Cats Effect такие ошибки тупо кидает в stdout и забывает про них.
В принципе система как целое должна быть готова к тому, что ресурс внезапно исчезнет вместе с jvm и хипом. Например в случае физического уничтожения сервера
источник

P

Python in Scala User Group
λoλcat
В принципе система как целое должна быть готова к тому, что ресурс внезапно исчезнет вместе с jvm и хипом. Например в случае физического уничтожения сервера
Она готова, но потеря ошибки может вызывать неожиданную остановку приложения без всяких следов. Типа JVM работает, а ничего не происходит. 😳
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Python
В смысле что ошибку можно потерять если ошибка второй раз произойдёт во время закрытия ресурса. Cats Effect такие ошибки тупо кидает в stdout и забывает про них.
graceful shutdown - это в принципе процесс, который может не произойти или остановиться внезапно, но который лучше бы происходил иногда, чем не происходил никогда
источник

Oℕ

Oleg ℕizhnik in Scala User Group
никакой разницы в гарантиях в том, засунете вы этот шатдаун в ресурс, или руками как-то приклеите нет, ресурсы просто удобнее композить
источник

NM

Nikita Matveenko in Scala User Group
λoλcat
В принципе система как целое должна быть готова к тому, что ресурс внезапно исчезнет вместе с jvm и хипом. Например в случае физического уничтожения сервера
Это конечно правильно, и в нашем случае вопрос решенный уже. Открытый вопрос на сколько глубоко стоит заходить с грейсфул шатдауном стейтфул кафка стримами, я вот лично считаю что обработать текущие сообщения из полла, завершить все выходящие сайд эффекты, сохранить промежуточный стейт и коммит оффсетов, а потом выходить из консумер группы, а потом выключать джвм
источник

λ

λoλcat in Scala User Group
Nikita Matveenko
Это конечно правильно, и в нашем случае вопрос решенный уже. Открытый вопрос на сколько глубоко стоит заходить с грейсфул шатдауном стейтфул кафка стримами, я вот лично считаю что обработать текущие сообщения из полла, завершить все выходящие сайд эффекты, сохранить промежуточный стейт и коммит оффсетов, а потом выходить из консумер группы, а потом выключать джвм
Все правильно, композируйте ресурсы со всеми релизами, но не надейтесь, что эти релизы отработают 100%.
источник

NM

Nikita Matveenko in Scala User Group
λoλcat
Все правильно, композируйте ресурсы со всеми релизами, но не надейтесь, что эти релизы отработают 100%.
Ну это-то и коту понятно :) согласен. А если процесс нормально завершается или мы просто вышли из use скоупа, при условии что ошибок/экскпшенов не вылетает нормально же все релизы будут вызываться?
источник

λ

λoλcat in Scala User Group
Nikita Matveenko
Ну это-то и коту понятно :) согласен. А если процесс нормально завершается или мы просто вышли из use скоупа, при условии что ошибок/экскпшенов не вылетает нормально же все релизы будут вызываться?
Нормально. Но там гарантии релиза, только если релиз не кинул эксепшен
источник

NM

Nikita Matveenko in Scala User Group
λoλcat
Нормально. Но там гарантии релиза, только если релиз не кинул эксепшен
Разумно, спасибо!
источник

C

Combot in Scala User Group
Илларион Болдырев has been banned! Reason: CAS ban.
источник
2021 March 09

EK

Evgenii Kuznetcov in Scala User Group
Есть, кстати, какие-нибудь статьи или tribal knowledge, как IO библиотеки реагируют на OS сигналы в плане финализации ресурсов? ZManaged у меня не вызывал финалайзер при убийстве программы. Возможно, потому что я не объявил всю программу zio.App, а вызывал unsafeRun.
источник

VH

Vitalii Honta in Scala User Group
Evgenii Kuznetcov
Есть, кстати, какие-нибудь статьи или tribal knowledge, как IO библиотеки реагируют на OS сигналы в плане финализации ресурсов? ZManaged у меня не вызывал финалайзер при убийстве программы. Возможно, потому что я не объявил всю программу zio.App, а вызывал unsafeRun.
Скорее всего так и есть. В идеале надо либо zio.App, либо ManagedApp
источник

EK

Evgenii Kuznetcov in Scala User Group
Vitalii Honta
Скорее всего так и есть. В идеале надо либо zio.App, либо ManagedApp
Спасибо, не знал о ManagedApp. И название должно быть по душе современным CTO.
источник