Size: a a a

ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)

2020 July 02

KS

Kirill Shelopugin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Ну в смысле когда ишью деду накатаю тогда запаблишу
источник

λ

λoλdog in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
ты сперва запаблиши
источник

λ

λoλdog in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
может не в деде дело
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Kirill Shelopugin
Там в канселейшене дело, походу - он в race ждёт пока не заканселится основной файбер, а тот сидит ждёт пока блокирующий вызов не закончится
интересно
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
а какая логика канселейшона
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
блокирующий канселейшон - это велико
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
типа какой-то роллбек?
источник

λ

λoλdog in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
а можно было сделать socket.close и откатилось бы само)
источник

w

welcometotheclubbudd... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
λoλdog
а можно было сделать socket.close и откатилось бы само)
источник

KS

Kirill Shelopugin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Ну там вот так в эффектах
def race[A, B](fa: F[A], fb: F[B]): F[Either[A, B]] =
   flatMap(racePair(fa, fb)) {
     case Left((a, fiberB))  => map(fiberB.cancel)(_ => Left(a))
     case Right((fiberA, b)) => map(fiberA.cancel)(_ => Right(b))
   }

Проверили - если имплементировать через racePair самим, но до канцеляции залогировать - всё так и работает - таймер просыпается через таймаут, логирует, потом пытается закенселить файбер. Т.к. файбер сидит пыхтит в блокирующем JDBC API, канселлейшен тоже ждет пока тот допыхтит до таймаута DB пула и последующие вычисления честно отменяются
источник

w

welcometotheclubbudd... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Kirill Shelopugin
Ну там вот так в эффектах
def race[A, B](fa: F[A], fb: F[B]): F[Either[A, B]] =
   flatMap(racePair(fa, fb)) {
     case Left((a, fiberB))  => map(fiberB.cancel)(_ => Left(a))
     case Right((fiberA, b)) => map(fiberA.cancel)(_ => Right(b))
   }

Проверили - если имплементировать через racePair самим, но до канцеляции залогировать - всё так и работает - таймер просыпается через таймаут, логирует, потом пытается закенселить файбер. Т.к. файбер сидит пыхтит в блокирующем JDBC API, канселлейшен тоже ждет пока тот допыхтит до таймаута DB пула и последующие вычисления честно отменяются
это нихуя не читаемо
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
а таймаут через рейс сделан:
источник

KS

Kirill Shelopugin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Проверить очень просто - в запросе делает задержка 10 секунд, таймаут 5. Ну и логируется. Оно честно работает 10 секунд, потом вываливает TimeoutException со словами "прошло 5 секунд"
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
?
источник

KS

Kirill Shelopugin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
а таймаут через рейс сделан:
Да
источник

w

welcometotheclubbudd... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Kirill Shelopugin
Да
источник

Oℕ

Oleg ℕizhnik in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
в мониксе тоже виснет?
источник

KS

Kirill Shelopugin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
источник

w

welcometotheclubbudd... in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
ущерб читаемости, и не в ботлнеке (сам таким иногда страдаю)
источник

KS

Kirill Shelopugin in ПОКА ОДЕРСКИ НЕ ВИДИТ (спидран Олега по тофу)
Oleg ℕizhnik
в мониксе тоже виснет?
Да
источник