mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Ensure that num_sync is greater than zero in synchronous_standby_names.
Previously num_sync could be set to zero and this setting caused an assertion failure. This means that multiple synchronous standbys code should assume that num_sync is greater than zero. Also setting num_sync to zero is nonsense because it's basically the configuration for synchronous replication. If users want not to make transaction commits wait for any standbys, synchronous_standby_names should be emptied to disable synchronous replication instead of setting num_sync to zero. This patch forbids users from setting num_sync to zero in synchronous_standby_names. If zero is specified, an error will happen during processing the parameter settings. Back-patch to 9.6 where multiple synchronous standbys feature was added. Patch by me. Reviewed by Tom Lane. Discussion: <CAHGQGwHWB3izc6cXuFLh5kOcAbFXaRhhgwd-X5PeN9TEjxqXwg@mail.gmail.com>
This commit is contained in:
parent
23c75b55aa
commit
93eb619cd3
@ -924,6 +924,13 @@ check_synchronous_standby_names(char **newval, void **extra, GucSource source)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (syncrep_parse_result->num_sync <= 0)
|
||||||
|
{
|
||||||
|
GUC_check_errmsg("number of synchronous standbys (%d) must be greater than zero",
|
||||||
|
syncrep_parse_result->num_sync);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* GUC extra value must be malloc'd, not palloc'd */
|
/* GUC extra value must be malloc'd, not palloc'd */
|
||||||
pconf = (SyncRepConfigData *)
|
pconf = (SyncRepConfigData *)
|
||||||
malloc(syncrep_parse_result->config_size);
|
malloc(syncrep_parse_result->config_size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user