From 4177d3f53dcf4a61856b9d9a02bfb40285123dc0 Mon Sep 17 00:00:00 2001
From: "Stephen R. van den Berg" <srb@cuci.nl>
Date: Sat, 5 May 2018 03:06:47 +0200
Subject: [PATCH] pgsql: Drain portal queue deterministically.

---
 lib/modules/Sql.pmod/pgsql_util.pmod | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod
index 3e17ddc331..e2bc80339b 100644
--- a/lib/modules/Sql.pmod/pgsql_util.pmod
+++ b/lib/modules/Sql.pmod/pgsql_util.pmod
@@ -2468,11 +2468,11 @@ class proxy {
   final void close() {
     throwdelayederror(this);
     {
-      Thread.MutexKey lock = shortmux->lock();
-      portalsinflight->wait_till_drained(lock);	// Drain portal queue to completion
-      lock = 0;
+      Thread.MutexKey lock;
       if (unnamedstatement)
         termlock = unnamedstatement->lock(1);
+      foreach (c->runningportals; Result result; )
+        catch(result->status_command_complete());
       if (c)				// Prevent trivial backtraces
         c->close();
       if (unnamedstatement)
-- 
GitLab