On Sat, May 21, 2022 at 11:26 PM rajesh singarapu <rajesh.rs0...@gmail.com> wrote: > > On Sat, May 21, 2022 at 7:08 PM Bharath Rupireddy > <bharath.rupireddyforpostg...@gmail.com> wrote: > > > > Hi, > > > > Currently postgres allows setting any value for max_wal_size or > > min_wal_size, not enforcing "at least twice as wal_segment_size" limit > > [1]. This isn't a problem if the server continues to run, however, the > > server can't come up after a crash or restart or maintenance or > > upgrade (goes to a continuous restart loop with FATAL errors [1]). > > > > How about we add GUC check hooks for both max_wal_size and > > min_wal_size where we can either emit ERROR or WARNING if values are > > not "at least twice as wal_segment_size"? > > > > Thoughts? > > > > [1] > > FATAL: "max_wal_size" must be at least twice "wal_segment_size" > > FATAL: "min_wal_size" must be at least twice "wal_segment_size" > Hi Bharath, > > Could you explain why min wal size must be at least twice but not > equal to wal_segment_size ?
It is because postgres always needs/keeps at least one WAL file and the usage of max_wal_size/min_wal_size is in terms of number of WAL segments/WAL files. It doesn't make sense to set max_wal_size/min_wal_size to, say, 20MB (where wal_segment_size = 16MB) and expect the server to honor it and do something. Hence the 'at least twice' requirement. Regards, Bharath Rupireddy.