Re: Logical Replication of sequences

Peter Smith <smithpb2250@gmail.com>

From: Peter Smith <smithpb2250@gmail.com>
To: shveta malik <shveta.malik@gmail.com>
Cc: Nisha Moond <nisha.moond412@gmail.com>, vignesh C <vignesh21@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Shlok Kyal <shlok.kyal.oss@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Peter Eisentraut <peter@eisentraut.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Euler Taveira <euler@eulerto.com>, Michael Paquier <michael@paquier.xyz>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, "Jonathan S. Katz" <jkatz@postgresql.org>
Date: 2025-05-20T05:43:04Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Doc: Add documentation for sequence synchronization.

  2. Remove unused assignment in CREATE PUBLICATION grammar.

  3. Add seq_sync_error_count to subscription statistics.

  4. Fix few issues in commit 5509055d69.

  5. Add sequence synchronization for logical replication.

  6. Add worker type argument to logical replication worker functions.

  7. Introduce "REFRESH SEQUENCES" for subscriptions.

  8. Refactor logical worker synchronization code into a separate file.

  9. Standardize use of REFRESH PUBLICATION in code and messages.

  10. Add "ALL SEQUENCES" support to publications.

  11. Expose sequence page LSN via pg_get_sequence_data.

  12. Resume conflict-relevant data retention automatically.

  13. Post-commit review fixes for 228c370868.

  14. Generate GUC tables from .dat file

> Test-scenario:
> --Created 250 sequences on both pub and sub.
> --There were 10 sequences mismatched.
> --Sequence replication worked as expected. Logs look better now:
>
> LOG:  Logical replication sequence synchronization for subscription
> "sub1" - total unsynchronized: 250; batch #1 = 100 attempted, 97
> succeeded, 3 mismatched
> LOG:  Logical replication sequence synchronization for subscription
> "sub1" - total unsynchronized: 250; batch #2 = 100 attempted, 95
> succeeded, 5 mismatched
> LOG:  Logical replication sequence synchronization for subscription
> "sub1" - total unsynchronized: 250; batch #3 = 50 attempted, 48
> succeeded, 2 mismatched
>

When there are many batches required, it seems a bit strange to repeat
the same "total unsynchronized" over and over.

Would it be better to show the total number once, and thereafter show
the number of sequences remaining to be processed as they tick down?

e.g.
LOG:  Logical replication sequence synchronization for subscription
"sub1" - total unsynchronized = 250
LOG:  Logical replication sequence synchronization for subscription
"sub1" - batch #1 = 100 attempted, 97 succeeded, 3 mismatched, 150
remaining
LOG:  Logical replication sequence synchronization for subscription
"sub1" - batch #2 = 100 attempted, 95 succeeded, 5 mismatched, 50
remaining
LOG:  Logical replication sequence synchronization for subscription
"sub1" - batch #3 = 50 attempted, 48 succeeded, 2 mismatched, 0
remaining

======
Kind Regards,
Peter Smith.
Fujitsu Australia