Re: Separate out FileSet from SharedFileSet (was Re: pgsql: pgstat: Bring up pgstat in BaseInit() to fix uninitialized use o) - Mailing list pgsql-hackers
| From | Masahiko Sawada |
|---|---|
| Subject | Re: Separate out FileSet from SharedFileSet (was Re: pgsql: pgstat: Bring up pgstat in BaseInit() to fix uninitialized use o) |
| Date | |
| Msg-id | CAD21AoCzw0M70JmuX23XeQeMBheYwFA7Qh9OR9QjTOOmF4EiMw@mail.gmail.com Whole thread Raw |
| In response to | Re: Separate out FileSet from SharedFileSet (was Re: pgsql: pgstat: Bring up pgstat in BaseInit() to fix uninitialized use o) (Dilip Kumar <dilipbalaut@gmail.com>) |
| Responses |
RE: Separate out FileSet from SharedFileSet (was Re: pgsql: pgstat: Bring up pgstat in BaseInit() to fix uninitialized use o)
|
| List | pgsql-hackers |
On Fri, Aug 27, 2021 at 3:34 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
>
> On Fri, Aug 27, 2021 at 10:56 AM houzj.fnst@fujitsu.com
> <houzj.fnst@fujitsu.com> wrote:
> >
> > On Thu, Aug 26, 2021 2:18 PM Dilip Kumar <dilipbalaut@gmail.com> wrote:
> >
> > > The patch looks good to me, I have rebased 0002 atop
> > > this patch and also done some cosmetic fixes in 0002.
> >
> > Here are some comments for the 0002 patch.
> >
> > 1)
> >
> > - * toplevel transaction. Each subscription has a separate set of files.
> > + * toplevel transaction. Each subscription has a separate files.
> >
> > a separate files => a separate file
>
> Done
>
> > 2)
> > + * Otherwise, just open it file for writing, in append mode.
> > */
> >
> > open it file => open the file
>
> Done
>
> >
> > 3)
> > if (subxact_data.nsubxacts == 0)
> > {
> > - if (ent->subxact_fileset)
> > - {
> > - cleanup_subxact_info();
> > - FileSetDeleteAll(ent->subxact_fileset);
> > - pfree(ent->subxact_fileset);
> > - ent->subxact_fileset = NULL;
> > - }
> > + cleanup_subxact_info();
> > + BufFileDeleteFileSet(stream_fileset, path, true);
> > +
> >
> > Before applying the patch, the code only invoke cleanup_subxact_info() when the
> > file exists. After applying the patch, it will invoke cleanup_subxact_info()
> > either the file exists or not. Is it correct ?
>
> I think this is just structure resetting at the end of the stream.
> Earlier the hash was telling us whether we have ever dirtied that
> structure or not but now we are not maintaining that hash so we just
> reset it at the end of the stream. I don't think its any bad, in fact
> I think this is much cheaper compared to maining the hash.
>
> >
> > 4)
> > /*
> > - * If this is the first streamed segment, the file must not exist, so make
> > - * sure we're the ones creating it. Otherwise just open the file for
> > - * writing, in append mode.
> > + * If this is the first streamed segment, create the changes file.
> > + * Otherwise, just open it file for writing, in append mode.
> > */
> > if (first_segment)
> > - {
> > ...
> > - if (found)
> > - ereport(ERROR,
> > - (errcode(ERRCODE_PROTOCOL_VIOLATION),
> > - errmsg_internal("incorrect first-segment flag for streamed replication
transaction")));
> > ...
> > - }
> > + stream_fd = BufFileCreateFileSet(stream_fileset, path);
> >
> >
> > Since the function BufFileCreateFileSet() doesn't check the file's existence,
> > the change here seems remove the file existence check which the old code did.
>
> Not really, we were just doing a sanity check of the in memory hash
> entry, now we don't maintain that so we don't need to do that.
Thank you for updating the patch!
The patch looks good to me except for the below comment:
+ /* Delete the subxact file, if it exist. */
+ subxact_filename(path, subid, xid);
+ BufFileDeleteFileSet(stream_fileset, path, true);
s/it exist/it exists/
Regards,
--
Masahiko Sawada
EDB: https://www.enterprisedb.com/
pgsql-hackers by date: