mirror of
https://github.com/postgres/postgres.git
synced 2025-04-29 13:56:47 +03:00
Don't clobber postmaster sigmask in dsm_impl_resize.
Commit 4518c798 intended to block signals in regular backends that allocate DSM segments, but dsm_impl_resize() is also reached by dsm_postmaster_startup(). It's not OK to clobber the postmaster's signal mask, so only manipulate the signal mask when under the postmaster. Back-patch to all releases, like 4518c798. Discussion: https://postgr.es/m/CA%2BhUKGKNpK%3D2OMeea_AZwpLg7Bm4%3DgYWk7eDjZ5F6YbozfOf8w%40mail.gmail.com
This commit is contained in:
parent
2019e6ecfa
commit
8383645592
@ -362,7 +362,8 @@ dsm_impl_posix_resize(int fd, off_t size)
|
|||||||
* allowed SIGUSR1 to interrupt us repeatedly (for example, due to recovery
|
* allowed SIGUSR1 to interrupt us repeatedly (for example, due to recovery
|
||||||
* conflicts), the retry loop might never succeed.
|
* conflicts), the retry loop might never succeed.
|
||||||
*/
|
*/
|
||||||
PG_SETMASK(&BlockSig);
|
if (IsUnderPostmaster)
|
||||||
|
PG_SETMASK(&BlockSig);
|
||||||
|
|
||||||
/* Truncate (or extend) the file to the requested size. */
|
/* Truncate (or extend) the file to the requested size. */
|
||||||
do
|
do
|
||||||
@ -402,9 +403,12 @@ dsm_impl_posix_resize(int fd, off_t size)
|
|||||||
}
|
}
|
||||||
#endif /* HAVE_POSIX_FALLOCATE && __linux__ */
|
#endif /* HAVE_POSIX_FALLOCATE && __linux__ */
|
||||||
|
|
||||||
save_errno = errno;
|
if (IsUnderPostmaster)
|
||||||
PG_SETMASK(&UnBlockSig);
|
{
|
||||||
errno = save_errno;
|
save_errno = errno;
|
||||||
|
PG_SETMASK(&UnBlockSig);
|
||||||
|
errno = save_errno;
|
||||||
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user