kdanilov: Кирша Данилов (Default)
kdanilov ([personal profile] kdanilov) wrote2020-09-01 03:41 pm

дыбр

Ну, Шрирам тут, оказывается, сбежал с нашей конторы, свой стартап организовал. Ну и ладно. Неплохой человек, чисто по поведению, но в реале я б от него держался подальше; мы для него вроде скотинки.

Ладно. Сегодня куча митингов была, причем про тот, что начался в 9, я узнал в 10. Когда его объявили, хз, где-то рано утром.

Ну там жужжали, аплодировали, все нормально.

Потом был скрам-митинг. Короче, пока мы с Каролин обсуждали, наш смежник, архитектор Майк, решил все вопросы, как-то по-своему. Задвигает теперь уверенно про race condition (я, по-моему, задвинул классный термин для обозначения любых глюков в этом дырявом софте).

А штука-то в том, что сзади у нас Оракл. А Оракл же древний аппарат. Он не умеет ACID. Он бросает ошибку, если чо. Это не постгрес. В постгресе грамотные люди сидят, а в Оракле - важные раджи. Ну и вот; все логично. Кроме того, что ребята, не надо так, да? Не, серьезно, мы никак CAS не можем сделать? Тогда остается "пробовать еще раз".

Но т.к. Майк взялся все пофиксить, то ну и ладушки.

А теперь опять вопросы перформенса. Короче, мой кеш, идее которого уже два месяца, а коду полтора, теперь тоже проник в мозги масс; теперь моего коду не боятся, а хотят. И все время интересуются моим мнением. Довольно необычно; в предыдущих паре мест мое мнение стоило ровно ноль. Странно. Вот сейчас пойду восстановлю бранчь, зафигачу пулреквест, мне чо. В нашей конторе работать много не требуется.

Такое ощущение, что я программирую слишком быстро (на самом деле нет), и народ за мной не поспевает. А я тереблю.

[personal profile] sassa_nf 2020-09-01 11:24 pm (UTC)(link)
> Не, серьезно, мы никак CAS не можем сделать? Тогда остается "пробовать еще раз".

didn't get this. CAS means one succeeds, others fail (and retry).

[personal profile] sassa_nf 2020-09-02 06:23 am (UTC)(link)
No, I mean I could not make the head and the tail out of the description. It looked like you complained about retries, but CAS is about retries.

What's more, CAS loop is about computing which x you want to change, read its current value, compute the new value. There are two computations here that are not generic. If the DB doesn't know how to compute which x you want to modify or what the correct new value for the current value is, it can't do better than tell you to do it (you have the logic of the retry loop, the DB doesn't).
Edited 2020-09-02 07:12 (UTC)

[personal profile] sassa_nf 2020-09-02 09:33 pm (UTC)(link)
The way I understand your complaint, you hope that the DB could have done CAS loop to ensure some contended operation succeeds rather than fail (and the scala code then retries).

Based on that understanding I was thinking that the contents of any CAS loop is really non-trivial and not generic, so the DB really can't be expected to do that.