Re: documenting the backup manifest file format

From: David Steele <david(at)pgmasters(dot)net>
To: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Justin Pryzby <pryzby(at)telsasoft(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Suraj Kharage <suraj(dot)kharage(at)enterprisedb(dot)com>, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>, Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com>, Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>, Tels <nospam-pg-abuse(at)bloodgate(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>
Subject: Re: documenting the backup manifest file format
Date: 2020-04-14 19:19:23
Message-ID: 4a32f040-5357-f639-fab8-0670d3ce2bbe@pgmasters.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 4/14/20 3:03 PM, Andrew Dunstan wrote:
>
> On 4/14/20 1:33 PM, David Steele wrote:
>> On 4/14/20 1:27 PM, Alvaro Herrera wrote:
>>> On 2020-Apr-14, David Steele wrote:
>>>
>>>> On 4/14/20 12:56 PM, Robert Haas wrote:
>>>>
>>>>> Hmm, did David suggest that before? I don't recall for sure. I think
>>>>> he had some suggestion, but I'm not sure if it was the same one.
>>>>
>>>> "I'm also partial to using epoch time in the manifest because it is
>>>> generally easier for programs to work with.  But, human-readable
>>>> doesn't
>>>> suck, either."
>>>
>>> Ugh.  If you go down that road, why write human-readable contents at
>>> all?  You may as well just use a binary format.  But that's a very
>>> slippery slope and you won't like to be in the bottom -- I don't see
>>> what that gains you.  It's not like it's a lot of work to parse a
>>> timestamp in a non-internationalized well-defined human-readable format.
>>
>> Well, times are a special case because they are so easy to mess up.
>> Try converting ISO-8601 to epoch time using the standard C functions
>> on a system where TZ != UTC. Fun times.
>
> Even if it's a zulu time? That would be pretty damn sad.
ZULU/GMT/UTC are all fine. But if the server timezone is EDT for example
(not that I recommend this) you are likely to get the wrong result.
Results vary based on your platform. For instance, we found MacOS was
more likely to work the way you would expect and Linux was hopeless.

There are all kinds of fun tricks to get around this (sort of). One is
to temporarily set TZ=UTC which sucks if an error happens before it gets
set back. There are some hacks to try to determine your offset which
have inherent race conditions around DST changes.

After some experimentation we just used the Posix definition for epoch
time and used that to do our conversions:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16

Regards,
--
-David
david(at)pgmasters(dot)net

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kuntal Ghosh 2020-04-14 19:40:32 Re: Parallel copy
Previous Message Robert Haas 2020-04-14 19:19:07 Re: Do we need to handle orphaned prepared transactions in the server?