Skip to content

Commit 7fa95bb

Browse files
committed
Backpatch addition of pump_until() more completely.
In a2ab9c0 I just backpatched the introduction of pump_until(), without changing the existing local definitions (as 6da65a3). The necessary changes seemed more verbose than desirable. However, that leads to warnings, as I failed to realize... Backpatch to all versions containing pump_until() calls before f74496d (there's none in 10). Discussion: https://postgr.es/m/2808491.1651802860@sss.pgh.pa.us Discussion: https://postgr.es/m/18b37361-b482-b9d8-f30d-6115cd5ce25c@enterprisedb.com Backpatch: 11-14
1 parent 66ca142 commit 7fa95bb

File tree

2 files changed

+18
-73
lines changed

2 files changed

+18
-73
lines changed

src/test/recovery/t/013_crash_restart.pl

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
INSERT INTO alive VALUES($$committed-before-sigquit$$);
7575
SELECT pg_backend_pid();
7676
];
77-
ok(pump_until($killme, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
77+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
7878
'acquired pid for SIGQUIT');
7979
my $pid = $killme_stdout;
8080
chomp($pid);
@@ -86,7 +86,7 @@
8686
BEGIN;
8787
INSERT INTO alive VALUES($$in-progress-before-sigquit$$) RETURNING status;
8888
];
89-
ok(pump_until($killme, \$killme_stdout, qr/in-progress-before-sigquit/m),
89+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/in-progress-before-sigquit/m),
9090
'inserted in-progress-before-sigquit');
9191
$killme_stdout = '';
9292
$killme_stderr = '';
@@ -99,7 +99,7 @@
9999
SELECT $$psql-connected$$;
100100
SELECT pg_sleep(3600);
101101
];
102-
ok(pump_until($monitor, \$monitor_stdout, qr/psql-connected/m),
102+
ok(pump_until($monitor, $psql_timeout, \$monitor_stdout, qr/psql-connected/m),
103103
'monitor connected');
104104
$monitor_stdout = '';
105105
$monitor_stderr = '';
@@ -116,6 +116,7 @@
116116
];
117117
ok( pump_until(
118118
$killme,
119+
$psql_timeout,
119120
\$killme_stderr,
120121
qr/WARNING: terminating connection because of unexpected SIGQUIT signal|server closed the connection unexpectedly|connection to server was lost|could not send data to server/m
121122
),
@@ -129,6 +130,7 @@
129130
# sending.
130131
ok( pump_until(
131132
$monitor,
133+
$psql_timeout,
132134
\$monitor_stderr,
133135
qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly|connection to server was lost|could not send data to server/m
134136
),
@@ -151,7 +153,7 @@
151153
$killme_stdin .= q[
152154
SELECT pg_backend_pid();
153155
];
154-
ok(pump_until($killme, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
156+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
155157
"acquired pid for SIGKILL");
156158
$pid = $killme_stdout;
157159
chomp($pid);
@@ -164,7 +166,7 @@
164166
BEGIN;
165167
INSERT INTO alive VALUES($$in-progress-before-sigkill$$) RETURNING status;
166168
];
167-
ok(pump_until($killme, \$killme_stdout, qr/in-progress-before-sigkill/m),
169+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/in-progress-before-sigkill/m),
168170
'inserted in-progress-before-sigkill');
169171
$killme_stdout = '';
170172
$killme_stderr = '';
@@ -176,7 +178,7 @@
176178
SELECT $$psql-connected$$;
177179
SELECT pg_sleep(3600);
178180
];
179-
ok(pump_until($monitor, \$monitor_stdout, qr/psql-connected/m),
181+
ok(pump_until($monitor, $psql_timeout, \$monitor_stdout, qr/psql-connected/m),
180182
'monitor connected');
181183
$monitor_stdout = '';
182184
$monitor_stderr = '';
@@ -194,6 +196,7 @@
194196
];
195197
ok( pump_until(
196198
$killme,
199+
$psql_timeout,
197200
\$killme_stderr,
198201
qr/server closed the connection unexpectedly|connection to server was lost|could not send data to server/m
199202
),
@@ -205,6 +208,7 @@
205208
# sending.
206209
ok( pump_until(
207210
$monitor,
211+
$psql_timeout,
208212
\$monitor_stderr,
209213
qr/WARNING: terminating connection because of crash of another server process|server closed the connection unexpectedly|connection to server was lost|could not send data to server/m
210214
),
@@ -242,33 +246,3 @@
242246
'can still write after orderly restart');
243247

244248
$node->stop();
245-
246-
# Pump until string is matched, or timeout occurs
247-
sub pump_until
248-
{
249-
my ($proc, $stream, $untl) = @_;
250-
$proc->pump_nb();
251-
while (1)
252-
{
253-
last if $$stream =~ /$untl/;
254-
if ($psql_timeout->is_expired)
255-
{
256-
diag("aborting wait: program timed out");
257-
diag("stream contents: >>", $$stream, "<<");
258-
diag("pattern searched for: ", $untl);
259-
260-
return 0;
261-
}
262-
if (not $proc->pumpable())
263-
{
264-
diag("aborting wait: program died");
265-
diag("stream contents: >>", $$stream, "<<");
266-
diag("pattern searched for: ", $untl);
267-
268-
return 0;
269-
}
270-
$proc->pump();
271-
}
272-
return 1;
273-
274-
}

src/test/recovery/t/022_crash_temp_files.pl

Lines changed: 8 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
$killme_stdin .= q[
5959
SELECT pg_backend_pid();
6060
];
61-
ok(pump_until($killme, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
61+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
6262
'acquired pid for SIGKILL');
6363
my $pid = $killme_stdout;
6464
chomp($pid);
@@ -87,7 +87,7 @@
8787
INSERT INTO tab_crash (a) VALUES(1);
8888
SELECT $$insert-tuple-to-lock-next-insert$$;
8989
];
90-
pump_until($killme2, \$killme_stdout2, qr/insert-tuple-to-lock-next-insert/m);
90+
pump_until($killme2, $psql_timeout, \$killme_stdout2, qr/insert-tuple-to-lock-next-insert/m);
9191
$killme_stdout2 = '';
9292
$killme_stderr2 = '';
9393

@@ -100,7 +100,7 @@
100100
SELECT $$in-progress-before-sigkill$$;
101101
INSERT INTO tab_crash (a) SELECT i FROM generate_series(1, 5000) s(i);
102102
];
103-
ok(pump_until($killme, \$killme_stdout, qr/in-progress-before-sigkill/m),
103+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/in-progress-before-sigkill/m),
104104
'insert in-progress-before-sigkill');
105105
$killme_stdout = '';
106106
$killme_stderr = '';
@@ -122,7 +122,7 @@ BEGIN
122122
SELECT $$insert-tuple-lock-waiting$$;
123123
];
124124

125-
pump_until($killme2, \$killme_stdout2, qr/insert-tuple-lock-waiting/m);
125+
pump_until($killme2, $psql_timeout, \$killme_stdout2, qr/insert-tuple-lock-waiting/m);
126126
$killme_stdout2 = '';
127127
$killme_stderr2 = '';
128128

@@ -171,7 +171,7 @@ BEGIN
171171
$killme_stdin .= q[
172172
SELECT pg_backend_pid();
173173
];
174-
ok(pump_until($killme, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
174+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/[[:digit:]]+[\r\n]$/m),
175175
'acquired pid for SIGKILL');
176176
$pid = $killme_stdout;
177177
chomp($pid);
@@ -188,7 +188,7 @@ BEGIN
188188
INSERT INTO tab_crash (a) VALUES(1);
189189
SELECT $$insert-tuple-to-lock-next-insert$$;
190190
];
191-
pump_until($killme2, \$killme_stdout2, qr/insert-tuple-to-lock-next-insert/m);
191+
pump_until($killme2, $psql_timeout, \$killme_stdout2, qr/insert-tuple-to-lock-next-insert/m);
192192
$killme_stdout2 = '';
193193
$killme_stderr2 = '';
194194

@@ -201,7 +201,7 @@ BEGIN
201201
SELECT $$in-progress-before-sigkill$$;
202202
INSERT INTO tab_crash (a) SELECT i FROM generate_series(1, 5000) s(i);
203203
];
204-
ok(pump_until($killme, \$killme_stdout, qr/in-progress-before-sigkill/m),
204+
ok(pump_until($killme, $psql_timeout, \$killme_stdout, qr/in-progress-before-sigkill/m),
205205
'insert in-progress-before-sigkill');
206206
$killme_stdout = '';
207207
$killme_stderr = '';
@@ -223,7 +223,7 @@ BEGIN
223223
SELECT $$insert-tuple-lock-waiting$$;
224224
];
225225

226-
pump_until($killme2, \$killme_stdout2, qr/insert-tuple-lock-waiting/m);
226+
pump_until($killme2, $psql_timeout, \$killme_stdout2, qr/insert-tuple-lock-waiting/m);
227227
$killme_stdout2 = '';
228228
$killme_stderr2 = '';
229229

@@ -266,32 +266,3 @@ BEGIN
266266
'temporary file was removed');
267267

268268
$node->stop();
269-
270-
# Pump until string is matched, or timeout occurs
271-
sub pump_until
272-
{
273-
my ($proc, $stream, $untl) = @_;
274-
$proc->pump_nb();
275-
while (1)
276-
{
277-
last if $$stream =~ /$untl/;
278-
if ($psql_timeout->is_expired)
279-
{
280-
diag("aborting wait: program timed out");
281-
diag("stream contents: >>", $$stream, "<<");
282-
diag("pattern searched for: ", $untl);
283-
284-
return 0;
285-
}
286-
if (not $proc->pumpable())
287-
{
288-
diag("aborting wait: program died");
289-
diag("stream contents: >>", $$stream, "<<");
290-
diag("pattern searched for: ", $untl);
291-
292-
return 0;
293-
}
294-
$proc->pump();
295-
}
296-
return 1;
297-
}

0 commit comments

Comments
 (0)