Pgproto service is initalized too early
Проблема
Инициализация pgproto сервиса начинается потенциально слишком рано на этапе жизни инстанса. Вот место где это происходит на данный момент https://git.picodata.io/core/picodata/-/blob/a3176a1334012b4a18cb82a8b4b38c9d58e2a96f/src/lib.rs#L1112. У нас нет гарантий, что к этому моменту на инстансе уже будет настроены репликация и вшард, (current_state != Online). То есть запросы по pgproto протоколу могут фейлиться со странными ошибками неожиданными ошибками.
Эта проблема не самая критичная, т.к. ничего плохого с данными это сделать теоретически не позволит, однако UX может страдать.
Решение
Строго говоря это нужно делать тогда же, когда вызываются on_start колбеки плагин-сервисов, то есть по вызову RPC от губернатора перед установкой current_state = Online для данного инстанса, т.к. в этот момент репликация и шардинг уже гарантировано настроены. На данный момент губернатор вызывает хранимку .proc_enable_all_plugins и только если на инстансе есть включенные плагины. Это придётся изменить и делать RPC безусловно.
-
Хранимку стоит переименовать .proc_before_online (или типа того) (придётся перенести её в другой файл) -
добавить туда старт пгпрото сервиса перед стартом плагин-сервисов