On Tue, Jan 17, 2023 at 1:21 PM houzj.f...@fujitsu.com <houzj.f...@fujitsu.com> wrote: > > On Tuesday, January 17, 2023 5:43 AM Peter Smith <smithpb2...@gmail.com> > wrote: > > > > On Mon, Jan 16, 2023 at 5:41 PM Amit Kapila <amit.kapil...@gmail.com> > > wrote: > > > > > > On Mon, Jan 16, 2023 at 10:24 AM Peter Smith <smithpb2...@gmail.com> > > wrote: > > > > > > > > 2. > > > > > > > > /* > > > > + * Return the pid of the leader apply worker if the given pid is > > > > +the pid of a > > > > + * parallel apply worker, otherwise return InvalidPid. > > > > + */ > > > > +pid_t > > > > +GetLeaderApplyWorkerPid(pid_t pid) > > > > +{ > > > > + int leader_pid = InvalidPid; > > > > + int i; > > > > + > > > > + LWLockAcquire(LogicalRepWorkerLock, LW_SHARED); > > > > + > > > > + for (i = 0; i < max_logical_replication_workers; i++) { > > > > + LogicalRepWorker *w = &LogicalRepCtx->workers[i]; > > > > + > > > > + if (isParallelApplyWorker(w) && w->proc && pid == w->proc->pid) { > > > > + leader_pid = w->leader_pid; break; } } > > > > + > > > > + LWLockRelease(LogicalRepWorkerLock); > > > > + > > > > + return leader_pid; > > > > +} > > > > > > > > 2a. > > > > IIUC the IsParallelApplyWorker macro does nothing except check that > > > > the leader_pid is not InvalidPid anyway, so AFAIK this algorithm > > > > does not benefit from using this macro because we will want to > > > > return InvalidPid anyway if the given pid matches. > > > > > > > > So the inner condition can just say: > > > > > > > > if (w->proc && w->proc->pid == pid) > > > > { > > > > leader_pid = w->leader_pid; > > > > break; > > > > } > > > > > > > > > > Yeah, this should also work but I feel the current one is explicit and > > > more clear. > > > > OK. > > > > But, I have one last comment about this function -- I saw there are already > > other functions that iterate max_logical_replication_workers like this > > looking > > for things: > > - logicalrep_worker_find > > - logicalrep_workers_find > > - logicalrep_worker_launch > > - logicalrep_sync_worker_count > > > > So I felt this new function (currently called GetLeaderApplyWorkerPid) ought > > to be named similarly to those ones. e.g. call it something like > > "logicalrep_worker_find_pa_leader_pid". > > > > I am not sure we can use the name, because currently all the API name in > launcher that > used by other module(not related to subscription) are like > AxxBxx style(see the functions in logicallauncher.h). > logicalrep_worker_xxx style functions are currently only declared in > worker_internal.h. >
OK. I didn't know there was another header convention that you were following. In that case, it is fine to leave the name as-is. ------ Kind Regards, Peter Smith. Fujitsu Australia