aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2022-08-27 15:21:31 +0900
committerMichael Paquier <michael@paquier.xyz>2022-08-27 15:21:31 +0900
commit52144b6fcd626bb7dbe9fe282329c0174620a34b (patch)
tree8c0abdd16f4730a3d4820c69b73f685ffe9186ac
parente890ce7a4feb9d72cd502d52c5a4c4d853801974 (diff)
downloadpostgresql-52144b6fcd626bb7dbe9fe282329c0174620a34b.tar.gz
postgresql-52144b6fcd626bb7dbe9fe282329c0174620a34b.zip
Use correct connection for cancellation in frontend's parallel slots
While waiting for slots to become available in wait_on_slots() in parallel_slot.c, the cancellation always relied on the first connection in the set to do the job. This could cause problems when this slot's socket is gone as PQgetCancel() would return NULL in this case. Rather than always using the first connection, this changes the logic to use the first valid connection for the cancellation. Author: Ranier Vilela Reviewed-by: Justin Pryzby Discussion: https://postgr.es/m/CAEudQAokk1h_pUwGXsYS4oVOuf35s1O2o3TXGHpV8=AWikvgHA@mail.gmail.com Backpatch-through: 14
-rw-r--r--src/fe_utils/parallel_slot.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/fe_utils/parallel_slot.c b/src/fe_utils/parallel_slot.c
index 8bce8ca3663..2be2903c9c6 100644
--- a/src/fe_utils/parallel_slot.c
+++ b/src/fe_utils/parallel_slot.c
@@ -235,7 +235,7 @@ wait_on_slots(ParallelSlotArray *sa)
if (cancelconn == NULL)
return false;
- SetCancelConn(sa->slots->connection);
+ SetCancelConn(cancelconn);
i = select_loop(maxFd, &slotset);
ResetCancelConn();