BUG #15492: pg_cancel_backend(pg_backend_pid()) returns true sporadically

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: exclusion(at)gmail(dot)com
Subject: BUG #15492: pg_cancel_backend(pg_backend_pid()) returns true sporadically
Date: 2018-11-08 04:30:05
Message-ID: 15492-9b79ce7d1e0687a9@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 15492
Logged by: Alexander Lakhin
Email address: exclusion(at)gmail(dot)com
PostgreSQL version: 11.0
Operating system: Windows 2012 R2
Description:

When performing `make standbycheck` I get sporadic failure:

============== running regression test queries ==============
test hs_standby_check ... ok
test hs_standby_allowed ... ok
test hs_standby_disallowed ... ok
test hs_standby_functions ... FAILED

======================
1 of 4 tests failed.
======================

***
C:/tmp/postgrespro-standard-10.6.1/src/test/regress/expected/hs_standby_functions.out Wed
Nov 7 01:14:03 2018
---
C:/tmp/postgrespro-standard-10.6.1/src/test/regress/results/hs_standby_functions.out Wed
Nov 7 06:36:47 2018
***************
*** 37,40 ****

-- suicide is painless
select pg_cancel_backend(pg_backend_pid());
! ERROR: canceling statement due to user request
--- 37,44 ----

-- suicide is painless
select pg_cancel_backend(pg_backend_pid());
! pg_cancel_backend
! -------------------
! t
! (1 row)
!

======================================================================

In fact, I see the same when I just do in psql (using EnterpriseDB's
PostgreSQL 11 for Windows):

postgres=# select pg_cancel_backend(pg_backend_pid());
ERROR: canceling statement due to user request
postgres=# select pg_cancel_backend(pg_backend_pid());
ERROR: canceling statement due to user request
postgres=# select pg_cancel_backend(pg_backend_pid());
ERROR: canceling statement due to user request
postgres=# select pg_cancel_backend(pg_backend_pid());
pg_cancel_backend
-------------------
t
(1 row)

postgres=# select pg_cancel_backend(pg_backend_pid());
pg_cancel_backend
-------------------
t
(1 row)

postgres=# select pg_cancel_backend(pg_backend_pid());
ERROR: canceling statement due to user request
postgres=#

I couldn't reproduce it on Linux, though.
So if it's an expected behaviour, shouldn't the hs_standby_functions check
be fixed?
(I don't understand what is the point of this pg_cancel_backend call.)

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Frederico Galvão 2018-11-08 04:40:25 Re: BUG #15489: Segfault on DELETE
Previous Message Thomas Munro 2018-11-08 01:50:35 Re: BUG #15449: file_fdw using program cause exit code error when using LIMIT