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


Reply via email to