Re: BUG #2569: statement_timeout bug on Windows

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: James <im-james(at)hotmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org, PostgreSQL-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: BUG #2569: statement_timeout bug on Windows
Date: 2006-08-09 17:58:58
Message-ID: 200608091758.k79Hww105146@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers pgsql-patches


I have a big "Oops" for this item. Seems in 8.0, we used the Win32 call
SetWaitableTimer(), which takes its timeout in 100 nanosecond intervals.
This was changed to use WaitForSingleObjectEx() in 8.1, but not
properly. The 8.0 code works fine.

The attached patch will fix the problem, and will be in 8.1.X. Sorry.

This affects all Win32 setitimer() calls in the backend, but the bug is
only related to micro-seconds, not full seconds. Because deadlock timer
is 1000ms, I don't think that is effected, but the stat file writer
timeout is 500ms, so that could be doing a 50sec timeout instead without
this patch.

---------------------------------------------------------------------------

James wrote:
>
> The following bug has been logged online:
>
> Bug reference: 2569
> Logged by: James
> Email address: im-james(at)hotmail(dot)com
> PostgreSQL version: 8.1.4
> Operating system: Windows 200 Pro SP4
> Description: statement_timeout bug on Windows
> Details:
>
> I'm using the latest version of postgresql (8.1.4) for Windows and I have a
> problem with 'statement_timeout'.
>
> Normally statement_timeout should "Abort any statement that takes over the
> specified number of milliseconds". However on my pc, instead of milliseconds
> it is tenth of seconds. For example: statement_timeout=30 actually means
> 'wait 3 seconds and abort' instead of wait 30 milliseconds.
>
> I've tested this on the same version of postgresql on Linux and it works
> correctly, as stated on the docs.
>
> What do I do to find get this strange result? I do this.
>
> set statement_timeout=30
> show statement_timeout
> VACUUM ANALYSE
>
> The last statement is aborted after 3 seconds.
>
>
> set statement_timeout=6
> show statement_timeout
> VACUUM ANALYSE
>
> The last statement is aborted after 600 milliseconds.
>
>
>
> Is this a bug (as I think) or could it be a misconfiguration of my OS, or of
> postgresql?
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq

--
Bruce Momjian bruce(at)momjian(dot)us
EnterpriseDB http://www.enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

Attachment Content-Type Size
/rtmp/diff text/x-diff 1.0 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Jim Nasby 2006-08-09 18:25:38 Re: BUG #2558: initDB failed to run
Previous Message PF 2006-08-09 17:11:42 Re: BUG #2565: pg tool doesn't detect window size changes

Browse pgsql-hackers by date

  From Date Subject
Next Message Joshua D. Drake 2006-08-09 18:04:18 LinuxWorld West
Previous Message Jonah H. Harris 2006-08-09 17:58:14 Re: new job

Browse pgsql-patches by date

  From Date Subject
Next Message Jeff Davis 2006-08-09 18:17:38 Re: Plugins redux (was Re: [PATCHES] PL instrumentation
Previous Message Andreas Pflug 2006-08-09 17:28:07 remote query debugging was: Plugins redux