Re: New option for pg_basebackup, to specify a different directory for pg_xlog

From: Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
To: Haribabu kommi <haribabu(dot)kommi(at)huawei(dot)com>
Cc: Magnus Hagander <magnus(at)hagander(dot)net>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: New option for pg_basebackup, to specify a different directory for pg_xlog
Date: 2013-11-18 18:00:14
Message-ID: CAHGQGwEbZ-iZLtCp7x=XHWnxQQk87n-fNLDOw-R=-=22drt6YA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Nov 19, 2013 at 12:01 AM, Haribabu kommi
<haribabu(dot)kommi(at)huawei(dot)com> wrote:
> On 18 November 2013 18:45 Fujii Masao wrote:
>> On Mon, Nov 18, 2013 at 6:31 PM, Haribabu kommi
>> <haribabu(dot)kommi(at)huawei(dot)com> wrote:
>> >
>> > On 18 November 2013 11:19 Haribabu kommi wrote:
>> >> On 17 November 2013 00:55 Fujii Masao wrote:
>> >> > On Sat, Nov 16, 2013 at 2:27 PM, Haribabu kommi
>> >> > <haribabu(dot)kommi(at)huawei(dot)com> wrote:
>> >> > > on 15 November 2013 17:26 Magnus Hagander wrote:
>> >> > >
>> >> > >>On Fri, Nov 15, 2013 at 12:10 PM, Haribabu kommi
>> >> > >><haribabu(dot)kommi(at)huawei(dot)com> wrote:
>> >> > >
>> >> > >>On 14 November 2013 23:59 Fujii Masao wrote:
>> >> > >>> On Thu, Nov 14, 2013 at 9:08 PM, Haribabu kommi
>> >> > >>> <haribabu(dot)kommi(at)huawei(dot)com> wrote:
>> >> > >>> > Please find attached the patch, for adding a new option for
>> >> > >>> > pg_basebackup, to specify a different directory for pg_xlog.
>> >> > >>>>
>> >> > >>> Sounds good! Here are the review comments:
>> >> > >>>> Don't we need to prevent users from specifying the same
>> >> directory
>> >> > >>>> in both --pgdata and --xlogdir?
>> >> > >
>> >> > >>>I feel no need to prevent, even if user specifies both --pgdata
>> >> and
>> >> > >>>--xlogdir as same directory all the transaction log files will
>> >> > >>>be created in the base directory instead of pg_xlog directory.
>> >> > >
>> >> > >
>> >> > >
>> >> > >>Given how easy it would be to prevent that, I think we should.
>> It
>> >> > >>would be an easy misunderstanding to specify that when you
>> >> actually
>> >> > >>want it in <wherever>/pg_xlog. Specifying that would be
>> >> > >>redundant in the first place, but people ca do that, but it
>> >> > >
>> >> > >>would also be very easy to do it by mistake, and you'd end up
>> >> > >>with something that's really bad, including a recursive symlink.
>> >> > >
>> >> > >
>> >> > >
>> >> > > Presently with initdb also user can specify both data and xlog
>> >> > > directories as same.
>> >> > >
>> >> > > To prevent the data directory and xlog directory as same, there
>> >> > > is
>> >> a
>> >> > > way in windows (_fullpath api) to get absolute path from a
>> >> > > relative path, but I didn't get any such possibilities in linux.
>> >> > >
>> >> > > I didn't find any other way to check it, if anyone have any idea
>> >> > > regarding this please let me know.
>> >> >
>> >> > What about make_absolute_path() in miscinit.c?
>> >>
>> >> The make_absoulte_patch() function gets the current working
>> directory
>> >> and adds The relative path to CWD, this is not giving proper
>> absolute
>> >> path.
>> >>
>> >> I have added a new function verify_data_and_xlog_dir_same() which
>> >> will change the Current working directory to data directory and gets
>> >> the CWD and the same way for transaction log directory. Compare the
>> >> both data and xlog directories and throw an error. Please check it
>> once.
>> >>
>> >> Is there any other way to identify that both data and xlog
>> >> directories are pointing to the same Instead of comparing both
>> absolute paths?
>> >>
>> >> Updated patch attached in the mail.
>> >
>> > Failure when the xlogdir doesn't exist is fixed in the updated patch
>> attached in the mail.
>>
>> Thanks for updating the patch!
>>
>> With the patch, when I specify the same directory in both -D and --
>> xlogdir, I got the following error.
>>
>> $ cd /tmp
>> $ pg_basebackup -D hoge --xlogdir=/tmp/hoge -X fetch
>> pg_basebackup: could not change directory to "hoge": No such file or
>> directory
>
> Thanks. After finding the xlog directory absolute path returning back to current working
> Directory is missed, because of this reason it is failing while finding the absolute
> Path for data directory. Apart from this change the code is reorganized a bit.
>
> Updated patch is attached in the mail. Please review it once.

Thanks for newer version of the patch!

I found that the empty base directory is created and remains even when the same
directory is specified in both -D and --xlogdir and the error occurs.
I think that it's
better to throw an error in that case before creating any new
directory. Thought?

+ xlogdir = get_absolute_path(xlog_dir);

xlog_dir must be an absolute path. ISTM we don't do the above. No?

Regards,

--
Fujii Masao

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Josh Berkus 2013-11-18 18:10:24 Re: additional json functionality
Previous Message Andres Freund 2013-11-18 17:55:25 Re: New option for pg_basebackup, to specify a different directory for pg_xlog