Fix timeout overflow in WAIT FOR LSN Commit 447aae13b03 accepted TIMEOUT values up to INT64_MAX milliseconds, but computing the deadline multiplies by 1000, which caused an int64 overflow. And the command reported a timeout at once instead of waiting.
Parse the value as an int instead, which simplifies the code and is consistent with other timeout values such as the statement_timeout GUC. The specified values are now rounded to the nearest millisecond, so a positive timeout below half a millisecond becomes zero and waits indefinitely. Backpatch to v19, where the TIMEOUT option was introduced. Reported-by: ChangAo Chen <[email protected]> Author: ChangAo Chen <[email protected]> Reviewed-by: Xuneng Zhou <[email protected]> Reviewed-by: Masahiko Sawada <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch-through: 19 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/6c44473c2deed07b4cca3c202dd48b1e8e002ec9 Modified Files -------------- doc/src/sgml/ref/wait_for.sgml | 18 +++++++++++++----- src/backend/access/transam/xlogwait.c | 2 +- src/backend/commands/repack_worker.c | 4 ++-- src/backend/commands/wait.c | 32 +++++++------------------------- src/include/access/xlogwait.h | 2 +- src/test/recovery/t/049_wait_for_lsn.pl | 14 ++++++++++++++ 6 files changed, 38 insertions(+), 34 deletions(-)
