Re: Avoid erroring out when unable to remove or parse logical rewrite files to save checkpoint work

From: Nathan Bossart <nathandbossart(at)gmail(dot)com>
To: Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>
Cc: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, "Bossart, Nathan" <bossartn(at)amazon(dot)com>, Julien Rouhaud <rjuju123(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Avoid erroring out when unable to remove or parse logical rewrite files to save checkpoint work
Date: 2022-08-16 20:32:33
Message-ID: 20220816203233.GA255076@nathanxps13
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Aug 10, 2022 at 03:28:25PM +0530, Bharath Rupireddy wrote:
> snprintf(path, sizeof(path), "pg_logical/mappings/%s", mapping_de->d_name);
> - if (lstat(path, &statbuf) == 0 && !S_ISREG(statbuf.st_mode))
> + if (get_dirent_type(path, mapping_de, false, LOG) != PGFILETYPE_REG)
> continue;

Previously, failure to lstat() wouldn't lead to skipping the entry. With
this patch, a failure to determine the file type will cause the entry to be
skipped. This might be okay in some places (e.g., CheckPointSnapBuild())
but not in others. For example, in CheckPointLogicalRewriteHeap(), this
could cause us to skip fsync-ing a file due to a get_dirent_type() failure,
which seems bad.

--
Nathan Bossart
Amazon Web Services: https://aws.amazon.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Daniel Gustafsson 2022-08-16 20:34:17 Re: Propose a new function - list_is_empty
Previous Message Andrew Dunstan 2022-08-16 20:27:28 Re: Add support for DEFAULT specification in COPY FROM