From: | "wangw(dot)fnst(at)fujitsu(dot)com" <wangw(dot)fnst(at)fujitsu(dot)com> |
---|---|
To: | "shiy(dot)fnst(at)fujitsu(dot)com" <shiy(dot)fnst(at)fujitsu(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | RE: Perform streaming logical transactions by background workers and parallel apply |
Date: | 2022-07-13 05:48:45 |
Message-ID: | OSZPR01MB6278023241CEDDE233C8386F9E899@OSZPR01MB6278.jpnprd01.prod.outlook.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, Jul 7, 2022 at 11:32 AM Shi, Yu/侍 雨 <shiy(dot)fnst(at)cn(dot)fujitsu(dot)com> wrote:
> Thanks for updating the patch.
>
> Here are some comments.
Thanks for your comments.
> 0001 patch
> ==============
> 1.
> + /* Check If there are free worker slot(s) */
> + LWLockAcquire(LogicalRepWorkerLock, LW_SHARED);
>
> I think "Check If" should be "Check if".
Fixed.
> 0003 patch
> ==============
> 1.
> Should we call apply_bgworker_relation_check() in apply_handle_truncate()?
Because TRUNCATE blocks all other operations on the table, I think that when
two transactions on the publisher-side operate on the same table, at least one
of them will be blocked. So I think for this case the blocking will happen on
the publisher-side.
> 0004 patch
> ==============
> 1.
> @@ -3932,6 +3958,9 @@ start_apply(XLogRecPtr origin_startpos)
> }
> PG_CATCH();
> {
> + /* Set the flag that we will retry later. */
> + set_subscription_retry(true);
> +
> if (MySubscription->disableonerr)
> DisableSubscriptionAndExit();
> Else
>
> I think we need to emit the error and recover from the error state before
> setting the retry flag, like what we do in DisableSubscriptionAndExit().
> Otherwise if an error is detected when setting the retry flag, we won't get the
> error message reported by the apply worker.
You are right.
I fixed this point as you suggested. (I moved the operations you mentioned from
the function DisableSubscriptionAndExit to before setting the retry flag.)
I also made a similar modification in the function start_table_sync.
Attach the news patches.
Regards,
Wang wei
Attachment | Content-Type | Size |
---|---|---|
v17-0001-Perform-streaming-logical-transactions-by-backgr.patch | application/octet-stream | 105.9 KB |
v17-0002-Test-streaming-parallel-option-in-tap-test.patch | application/octet-stream | 69.1 KB |
v17-0003-Add-some-checks-before-using-apply-background-wo.patch | application/octet-stream | 36.8 KB |
v17-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch | application/octet-stream | 28.9 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2022-07-13 05:54:18 | Re: Non-replayable WAL records through overflows and >MaxAllocSize lengths |
Previous Message | Andres Freund | 2022-07-13 05:41:31 | Re: Reducing the chunk header sizes on all memory context types |