*** a/src/backend/access/transam/xlog.c
--- b/src/backend/access/transam/xlog.c
***************
*** 8943,8949 **** retry:
  				sources = XLOG_FROM_PG_XLOG;
  				if (InArchiveRecovery)
  					sources |= XLOG_FROM_ARCHIVE;
- 				sources &= ~failedSources;
  
  				readFile = XLogFileReadAnyTLI(readId, readSeg, emode_arg,
  											  sources);
--- 8943,8948 ----
***************
*** 9041,9048 **** retry:
  	return true;
  
  next_record_is_invalid:
- 	failedSources |= readSource;
- 
  	if (readFile >= 0)
  		close(readFile);
  	readFile = -1;
--- 9040,9045 ----
***************
*** 9050,9056 **** next_record_is_invalid:
--- 9047,9056 ----
  	readSource = 0;
  
  	if (StandbyMode)
+ 	{
+ 		failedSources |= readSource;
  		goto retry;
+ 	}
  	else
  		return false;
  
