On 2021/10/12 16:39, Bharath Rupireddy wrote:
Otherwise, we could discard defining MyBackendId in auxprocess.c and define the MyBackendId in the SharedInvalBackendInit itself as this is the function that defines the MyBackendId for everyone whoever requires it. I prefer this approach over what's done in PoC patch. In SharedInvalBackendInit: Assert(MyBackendId == InvalidBackendId); /* * The startup process requires a valid BackendId for the SI message * buffer and virtual transaction id, so define it here with the value with * which the procsignal array slot was allocated in AuxiliaryProcessMain. * All other auxiliary processes don't need it. */ if (MyAuxProcType == StartupProcess) MyBackendId = MaxBackends + MyAuxProcType + 1;
Yes, this is an option. But, at [1], you're proposing to enhance pg_log_backend_memory_contexts() so that it can send the request to even auxiliary processes. If we need to assign a backend ID to an auxiliary process other than the startup process and use it to send the signal promptly to those auxiliary processes, this design might not be good. Since those auxiliary processes don't call SharedInvalBackendInit(), backend IDs for them might need to be assigned outside SharedInvalBackendInit(). Thought? [1] https://postgr.es/m/CALj2ACU1nBzpacOK2q=a65s_4+oaz_rltsu1ri0gf7yumnm...@mail.gmail.com Regards, -- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION