On Wednesday, December 22, 2021 6:14 PM osumi.takamichi@fujitsu.com <osumi.takamichi@fujitsu.com> wrote:
>
> Attached the new patch v19.
>
Thanks for your patch. I think it's better if you could add this patch to the commitfest.
Here are some comments:
1)
+ <structfield>commit_count</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of transactions successfully applied in this subscription.
+ Both COMMIT and COMMIT PREPARED increment this counter.
+ </para></entry>
+ </row>
...
I think the commands (like COMMIT, COMMIT PREPARED ...) can be surrounded with
"<command> </command>", thoughts?
2)
+extern void pgstat_report_subworker_xact_end(LogicalRepWorker *repWorker,
+ LogicalRepMsgType command,
+ bool bforce);
Should "bforce" be "force"?
3)
+ * This should be called before the call of process_syning_tables() so to not
"process_syning_tables()" should be "process_syncing_tables()".
4)
+void
+pgstat_send_subworker_xact_stats(LogicalRepWorker *repWorker, bool force)
+{
+ static TimestampTz last_report = 0;
+ PgStat_MsgSubWorkerXactEnd msg;
+
+ if (!force)
+ {
...
+ if (!TimestampDifferenceExceeds(last_report, now, PGSTAT_STAT_INTERVAL))
+ return;
+ last_report = now;
+ }
+
...
+ if (repWorker->commit_count == 0 && repWorker->abort_count == 0)
+ return;
...
I think it's better to check commit_count and abort_count first, then check if
reach PGSTAT_STAT_INTERVAL.
Otherwise if commit_count and abort_count are 0, it is possible that the value
of last_report has been updated but it didn't send stats in fact. In this case,
last_report is not the real time that send last message.
Regards,
Tang