RE: Perform streaming logical transactions by background workers and parallel apply

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: "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(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-09-21 02:09:27
Message-ID: OS3PR01MB6275298521AE1BBEF5A055EE9E4F9@OS3PR01MB6275.jpnprd01.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tues, Sep 20, 2022 at 11:41 AM Shi, Yu/侍 雨 <shiy(dot)fnst(at)cn(dot)fujitsu(dot)com> wrote:
> On Mon, Sept 19, 2022 11:26 AM Wang, Wei/王 威 <wangw(dot)fnst(at)fujitsu(dot)com>
> wrote:
> >
> >
> > Improved as suggested.
> >
>
> Thanks for updating the patch. Here are some comments on 0001 patch.

Thanks for your comments.

> 1.
> + case TRANS_LEADER_SERIALIZE:
>
> - oldctx = MemoryContextSwitchTo(ApplyContext);
> + /*
> + * Notify handle methods we're processing a remote in-
> progress
> + * transaction.
> + */
> + in_streamed_transaction = true;
>
> - MyLogicalRepWorker->stream_fileset = palloc(sizeof(FileSet));
> - FileSetInit(MyLogicalRepWorker->stream_fileset);
> + /*
> + * Since no parallel apply worker is used for the first
> stream
> + * start, serialize all the changes of the transaction.
> + *
> + * Start a transaction on stream start, this transaction will
> be
>
>
> It seems that the following comment can be removed after using switch case.
> + * Since no parallel apply worker is used for the first
> stream
> + * start, serialize all the changes of the transaction.

Removed.

> 2.
> + switch (apply_action)
> + {
> + case TRANS_LEADER_SERIALIZE:
> + if (!in_streamed_transaction)
> + ereport(ERROR,
> +
> (errcode(ERRCODE_PROTOCOL_VIOLATION),
> + errmsg_internal("STREAM STOP
> message without STREAM START")));
>
> In apply_handle_stream_stop(), I think we can move this check to the beginning
> of
> this function, to be consistent to other functions.

Improved as suggested.

> 3. I think the some of the changes in 0005 patch can be merged to 0001 patch,
> 0005 patch can only contain the changes about new column 'apply_leader_pid'.

Merged changes not related to 'apply_leader_pid' into patch 0001.

> 4.
> + * ParallelApplyWorkersList. After successfully, launching a new worker it's
> + * information is added to the ParallelApplyWorkersList. Once the worker
>
> Should `it's` be `its` ?

Fixed.

Attach the new patch set.

Regards,
Wang wei

Attachment Content-Type Size
v31-0001-Perform-streaming-logical-transactions-by-parall.patch application/octet-stream 138.7 KB
v31-0002-Test-streaming-parallel-option-in-tap-test.patch application/octet-stream 74.5 KB
v31-0003-Add-some-checks-before-using-parallel-apply-work.patch application/octet-stream 49.8 KB
v31-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch application/octet-stream 60.2 KB
v31-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch application/octet-stream 6.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message wangw.fnst@fujitsu.com 2022-09-21 02:14:35 RE: Perform streaming logical transactions by background workers and parallel apply
Previous Message Peter Smith 2022-09-21 01:57:46 Re: Perform streaming logical transactions by background workers and parallel apply