Thomas Munro escribió: > @@ -1094,8 +1103,16 @@ WALRead(XLogReaderState *state, > XLByteToSeg(recptr, nextSegNo, > state->segcxt.ws_segsize); > state->routine.segment_open(state, nextSegNo, &tli); > > - /* This shouldn't happen -- indicates a bug in > segment_open */ > - Assert(state->seg.ws_file >= 0); > + /* callback reported that there was no such file */ > + if (state->seg.ws_file < 0) > + { > + errinfo->wre_errno = errno; > + errinfo->wre_req = 0; > + errinfo->wre_read = 0; > + errinfo->wre_off = startoff; > + errinfo->wre_seg = state->seg; > + return false; > + }
Ah, this is what Michael was saying ... we need to fix WALRead so that it doesn't depend on segment_open alway returning a good FD. This needs a fix everywhere, not just here, and improve the error report interface. Maybe it does make sense to get it fixed in pg13 and avoid a break later. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services