BUG #15492: pg_cancel_backend(pg_backend_pid()) returns truesporadically - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #15492: pg_cancel_backend(pg_backend_pid()) returns truesporadically
Date
Msg-id 15492-9b79ce7d1e0687a9@postgresql.org
Whole thread Raw
Responses Re: BUG #15492: pg_cancel_backend(pg_backend_pid()) returns true sporadically  (Magnus Hagander <magnus@hagander.net>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15492
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.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.)


pgsql-bugs by date:

Previous
From: Thomas Munro
Date:
Subject: Re: BUG #15449: file_fdw using program cause exit code error whenusing LIMIT
Next
From: Frederico Galvão
Date:
Subject: Re: BUG #15489: Segfault on DELETE