mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Complain with proper error message if streaming stops prematurely
In particular, with a controlled shutdown of the master, pg_basebackup with streaming log could terminate without an error message, even though the backup is not consistent. In passing, fix a few cases where walfile wasn't properly set to -1 after closing. Fujii Masao
This commit is contained in:
		@@ -611,11 +611,20 @@ ReceiveXlogStream(PGconn *conn, XLogRecPtr startpos, uint32 timeline,
 | 
			
		||||
	}
 | 
			
		||||
	PQclear(res);
 | 
			
		||||
 | 
			
		||||
	/* Complain if we've not reached stop point yet */
 | 
			
		||||
	if (stream_stop != NULL && !stream_stop(blockpos, timeline, false))
 | 
			
		||||
	{
 | 
			
		||||
		fprintf(stderr, _("%s: replication stream was terminated before stop point\n"),
 | 
			
		||||
				progname);
 | 
			
		||||
		goto error;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (copybuf != NULL)
 | 
			
		||||
		PQfreemem(copybuf);
 | 
			
		||||
	if (walfile != -1 && close(walfile) != 0)
 | 
			
		||||
		fprintf(stderr, _("%s: could not close file %s: %s\n"),
 | 
			
		||||
				progname, current_walfile_name, strerror(errno));
 | 
			
		||||
	walfile = -1;
 | 
			
		||||
	return true;
 | 
			
		||||
 | 
			
		||||
error:
 | 
			
		||||
@@ -624,5 +633,6 @@ error:
 | 
			
		||||
	if (walfile != -1 && close(walfile) != 0)
 | 
			
		||||
		fprintf(stderr, _("%s: could not close file %s: %s\n"),
 | 
			
		||||
				progname, current_walfile_name, strerror(errno));
 | 
			
		||||
	walfile = -1;
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user