On 21 May 2018 at 12:57, Craig Ringer <cr...@2ndquadrant.com> wrote: > On 18 May 2018 at 00:44, Andres Freund <and...@anarazel.de> wrote: > >> Hi, >> >> On 2018-05-10 09:50:03 +0800, Craig Ringer wrote: >> > while ((src = (RewriteMappingFile *) >> hash_seq_search(&seq_status)) != NULL) >> > { >> > if (FileSync(src->vfd, WAIT_EVENT_LOGICAL_REWRITE_SYNC) >> != 0) >> > - ereport(ERROR, >> > + ereport(PANIC, >> > (errcode_for_file_access(), >> > errmsg("could not fsync file >> \"%s\": %m", src->path))); >> >> To me this (and the other callers) doesn't quite look right. First, I >> think we should probably be a bit more restrictive about when PANIC >> out. It seems like we should PANIC on ENOSPC and EIO, but possibly not >> others. Secondly, I think we should centralize the error handling. It >> seems likely that we'll acrue some platform specific workarounds, and I >> don't want to copy that knowledge everywhere. >> >> Also, don't we need the same on close()? >> >> > Yes, we do, and that expands the scope a bit. > > I agree with Robert that some sort of filter/macro is wise, though naming > it clearly will be tricky. > > I'll have a look. > > On the queue for tomorrow.
-- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services