Subject: Timeout gets unset on a syntax error.

From: "ISHAN CHHANGANI ." <[email-masked]>
Date: Wed, 29 May 2024 10:29:22 +0000

On a particular query, I start an alarm (say for 5 sec) using RegisterTimeout , and when the alarm rings, I log something.
This works fine.
But if I run a query with a syntax error between the time duration, then the alarm never rings.
Is there some code within Postgres that resets/removes the signals in case a query hits any error?

TimeoutId timer = RegisterTimeout(USER_TIMEOUT, interval_handler);
    enable_timeout_after(timer, 5 * 1000);

Thanks,
Ishan.

-- 
The information contained in this electronic communication is intended 
solely for the individual(s) or entity to which it is addressed. It may 
contain proprietary, confidential and/or legally privileged information. 
Any review, retransmission, dissemination, printing, copying or other use 
of, or taking any action in reliance on the contents of this information by 
person(s) or entities other than the intended recipient is strictly 
prohibited and may be unlawful. If you have received this communication in 
error, please notify us by responding to this email or telephone and 
immediately and permanently delete all copies of this message and any 
attachments from your system(s). The contents of this message do not 
necessarily represent the views or policies of BITS Pilani.

---

From: Greg Sabino Mullane <[email-masked]>
Date: Wed, 29 May 2024 09:19:10 -0400

> Is there some code within Postgres that resets/removes the signals in case

See the comment and call to disable_all_timeouts() in postgres.c, part of
the cleanup-after-exception efforts:

https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/tcop/postgres.c#l4356

Cheers,
Greg