с вызовом какой-то операции через губера клиент должен будет отправлять также cas в эту таблицу
после этого клиент сразу начинает ждать появления в этой таблице строчки
губер выполнив запрос делает cas в эту таблицу
увидев строчку он посылает cas на её удаление и возвращает пользователю соответствующий ответ
Плюсы:
общий подход
Минусы:
нагрузка на рафт
значительная задержка между моментом, когда результат известен и когда пользователь его увидит
нужно подчищать таблицу от устаревшей инфы, если клиенты таймаутятся
Добавлять request_id + requestor_id: InstanceId в запросы к губеру:
для каждой операции через губера добавляем доп. поле с инфой об отправителе запроса
модифицируем губера так, чтобы он отправлял RPC .proc_report_request_result на requestor_id, когда результат известен
клиент отправив запрос ждёт, когда ему придёт RPC .proc_report_request_result, через какой-нибудь DistributedRequestManager::wait_request_result(request_id)
Плюсы:
меньше задержка
нагрузка на рафт не меняется
общий подход (не смог придумать почему это не так)
Минусы:
возможно реализация будет чуть сложнее, хотя не факт
Дмитрий Кольцовchanged title from RFC: describe the way to throw errors between governor and the initiator to Операции управления плагинами должны возвращать человеко-читаемую диагностику при ошибке
changed title from RFC: describe the way to throw errors between governor and the initiator to Операции управления плагинами должны возвращать человеко-читаемую диагностику при ошибке
Дмитрий Кольцовchanged title from Операции управления плагинами должны возвращать человеко-читаемую диагностику при ошибке to Операции управления плагинами должны возвращать человеко-читаемую ошибку
changed title from Операции управления плагинами должны возвращать человеко-читаемую диагностику при ошибке to Операции управления плагинами должны возвращать человеко-читаемую ошибку
После обсуждения пришли к выводу, что надо делать через добавление сообщения об ошибке и (возможно) айди запроса в Abort запись в рафт журнале. Для тех операций, у которых такая запись ещё не добавляется, нужно добавить эту запись
Georgy Moshkinchanged title from Операции управления плагинами должны возвращать человеко-читаемую ошибку to way to throw errors between governor and the initiator
changed title from Операции управления плагинами должны возвращать человеко-читаемую ошибку to way to throw errors between governor and the initiator