Size: a a a

2020 October 11

Dv

Dr. Friedrich von Ne... in codingteam
Ладно, план такой. Я попробую у автора вытребовать логи и посмотреть, что там происходит. Если не получится, то поднимем свой инстанс и изучим. Если проблема действительно в том, что боты кликают несколько кнопок подряд, то это в логах будет видно, и мы починим.
источник

AB

Anton Burkin in codingteam
Так, а логов у нас ещё нет? Тогда да, для начала нужно получить их.
источник

AB

Anton Burkin in codingteam
Вдруг нету там рейса.
источник

Dv

Dr. Friedrich von Ne... in codingteam
codingteam@cjr
Minoru
насколько я вижу, _usersStore используется только для принятия решения в первом if. Поэтому, во-первых, можно Get и Remove переместить в критическую секцию в начале кода, во-вторых, наверняка есть какой-нибудь метод Take, возвращающий Option — лучше переехать на него
Тут есть одна проблемка.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Если ты будешь юзера сразу убирать из коллекции, а дальнейший код упадёт (например, не сможет его авторизовать), то на этом история юзера закончится. Он так и повиснет в непонятном состоянии.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Нужно компенсирующее действие в случае ошибки.

И тут всё снова становится очень сложно!
источник

c

codingteam@cjr in codingteam
Minoru
а, там же всё может бросать исключения? :(
источник

Dv

Dr. Friedrich von Ne... in codingteam
Ну, это HTTP, дядь. Ему сам б-г велел бросать исключения, ну или ещё как-то рапортовать об ошибке.
источник

Dv

Dr. Friedrich von Ne... in codingteam
По основному флоу мы делаем три HTTP-запроса.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Но существенно важен только первый.
источник

AB

Anton Burkin in codingteam
Пойду код читать, а то читаю чат.
источник

c

codingteam@cjr in codingteam
Minoru
о, а мы же когда-то обсуждали использование объектов как локов — нельзя ли тут после проверки на null использовать unauthorizedUser как лок? Или вы это и имели в виду, когда обсуждали шардинг по пользователям?
источник

c

codingteam@cjr in codingteam
Minoru
правда, локи наверняка не гарантируют порядок разблокировки, т.е. ответы пользователя будут обрабатываться в произвольном порядке. Но лучше таких пользователей сразу банить :)
источник

AB

Anton Burkin in codingteam
@fvnever разрешите доебаться? Почему существует переменная
private const int ButtonsCount = 8;
Если можно брать размер у NumberTexts
источник

c

codingteam@cjr in codingteam
Minoru
не по адресу, иди автора спроси, @the_RAMZAY
источник

AB

Anton Burkin in codingteam
А, всё, ок, я чот думал это форневер писал
источник

Dv

Dr. Friedrich von Ne... in codingteam
codingteam@cjr
Minoru
о, а мы же когда-то обсуждали использование объектов как локов — нельзя ли тут после проверки на null использовать unauthorizedUser как лок? Или вы это и имели в виду, когда обсуждали шардинг по пользователям?
Тут нельзя, так не получится. Код очень асинхронный, а асинхронные локи — достаточно сложные конструкции, чтобы просто так на объекты не мапиться.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Anton Burkin
@fvnever разрешите доебаться? Почему существует переменная
private const int ButtonsCount = 8;
Если можно брать размер у NumberTexts
Да, можно брать размер, отправь PR :)
источник

AB

Anton Burkin in codingteam
Dr. Friedrich von Never
Да, можно брать размер, отправь PR :)
Отправлю :3
источник

AB

Anton Burkin in codingteam
А то моя лень любит всё делать максимально динамичным, что бы код сам за собой следил)
источник