Size: a a a

Scala User Group

2020 August 17

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
упал тест - вызвать другой
и здесь тоже
источник

N

Nikita🌈🦄🌈🇺🇦🇨🇦... in Scala User Group
Oleg ℕizhnik
сделать ретрай, но сохранить информацию, что была ошибка?
не, ритрай не нужен если ошибки не было. Если эффект завершился с ошибкой, то в зависмости от последнего успешного степа до ошибки (эффект затерминейтит все что после), выполнить какую-то другую логику. если ошибки нет - то пойти дальше. Примерно так :)
источник

N

Nikita🌈🦄🌈🇺🇦🇨🇦... in Scala User Group
Apache DOG™
тогда "вернет"
я вот погуглил как, пока не вижу простых способов. вариант с кастомными ошибками на каждый степ кажется более работоспособным
источник

AD

Apache DOG™ in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
я вот погуглил как, пока не вижу простых способов. вариант с кастомными ошибками на каждый степ кажется более работоспособным
Всмысле, StepXFailed(details: Details, inputData: InputData), вот это поднимаешь из степа и получаешь данные от предыдущего
источник

VK

Vladyslav Kopaniev in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
не, ритрай не нужен если ошибки не было. Если эффект завершился с ошибкой, то в зависмости от последнего успешного степа до ошибки (эффект затерминейтит все что после), выполнить какую-то другую логику. если ошибки нет - то пойти дальше. Примерно так :)
посмотрите на концепцию саг, возможно это что вы ищите - https://github.com/VladKopanev/zio-saga
если один из степов саги зафейлится то будет выполнена логика ролбека в зависимости от того на каком шаге зафейлилось
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
не, ритрай не нужен если ошибки не было. Если эффект завершился с ошибкой, то в зависмости от последнего успешного степа до ошибки (эффект затерминейтит все что после), выполнить какую-то другую логику. если ошибки нет - то пойти дальше. Примерно так :)
ну в общем, да, есть mapError, проще всего будет сделать ADT для ошибки и матчить его
источник

N

Nikita🌈🦄🌈🇺🇦🇨🇦... in Scala User Group
спасибо, попробую!
источник

N

Nikita🌈🦄🌈🇺🇦🇨🇦... in Scala User Group
Vladyslav Kopaniev
посмотрите на концепцию саг, возможно это что вы ищите - https://github.com/VladKopanev/zio-saga
если один из степов саги зафейлится то будет выполнена логика ролбека в зависимости от того на каком шаге зафейлилось
интересный паттерн, погуглил его
источник

VK

Vladyslav Kopaniev in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
интересный паттерн, погуглил его
👍👍👍
источник

V

Vasiliy in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
def execute() = for {
   l <- login
   t <- test
   l_out <- logOut

 } yield (...)
def execute() = for {
   l <- login.retry(someSchedule)
   t <- test.orElse(drugoiTest)
   l_out <- logOut

 } yield (...)


а так?
источник

N

Nikita🌈🦄🌈🇺🇦🇨🇦... in Scala User Group
о, так тоже сгодится, благодарочка :D
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vasiliy
def execute() = for {
   l <- login.retry(someSchedule)
   t <- test.orElse(drugoiTest)
   l_out <- logOut

 } yield (...)


а так?
я почему-то думал, что этот код уже написан
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Nikita🌈🦄🌈🇺🇦🇨🇦
о, так тоже сгодится, благодарочка :D
в следующий раз начинайте со scastie
источник

V

Vasiliy in Scala User Group
Oleg ℕizhnik
я почему-то думал, что этот код уже написан
+ этот диалог между нами уже состоялся бесконечное количество раз
источник

IZ

Ilya Zhavoronkov in Scala User Group
Подскажите, как тестить сгенеренные аккой grpc классы, которые лежат в target? в тестах их нет в класспасе. как можно добавить?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Почему в тесте их нет в класспасе?
источник

IZ

Ilya Zhavoronkov in Scala User Group
Oleg ℕizhnik
Почему в тесте их нет в класспасе?
ClassNotFoundException. Полагаю target/src_managed нет в класспасе
источник

Oℕ

Oleg ℕizhnik in Scala User Group
А чем собираете
источник

IZ

Ilya Zhavoronkov in Scala User Group
sbt
источник

IZ

Ilya Zhavoronkov in Scala User Group
Oleg ℕizhnik
А чем собираете
sourceManaged in Test := baseDirectory.value / "src_managed" / "main" / "scala" помогло
источник