On Fri, Aug 27, 2021 at 3:34 PM Dilip Kumar <dilipbal...@gmail.com> wrote:
>
> On Fri, Aug 27, 2021 at 10:56 AM houzj.f...@fujitsu.com
> <houzj.f...@fujitsu.com> wrote:
> >
> > On Thu, Aug 26, 2021 2:18 PM Dilip Kumar <dilipbal...@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/


Reply via email to