Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbe2e329

Browse files
committed
isolationtester: Use atexit()
Replace exit_nicely() calls with standard exit() and register thecleanup actions using atexit().Reviewed-by: Alvaro Herrera <alvherre@2ndquadrant.com>Discussion:https://www.postgresql.org/message-id/flat/ec4135ba-84e9-28bf-b584-0e78d47448d5@2ndquadrant.com/
1 parent3913a40 commitbe2e329

File tree

1 file changed

+19
-23
lines changed

1 file changed

+19
-23
lines changed

‎src/test/isolation/isolationtester.c

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ static intnconns = 0;
3232
/* In dry run only output permutations to be run by the tester. */
3333
staticintdry_run= false;
3434

35-
staticvoidexit_nicely(void)pg_attribute_noreturn();
3635
staticvoidrun_testspec(TestSpec*testspec);
3736
staticvoidrun_all_permutations(TestSpec*testspec);
3837
staticvoidrun_all_permutations_recurse(TestSpec*testspec,intnsteps,
@@ -51,15 +50,14 @@ static void printResultSet(PGresult *res);
5150
staticvoidisotesterNoticeProcessor(void*arg,constchar*message);
5251
staticvoidblackholeNoticeProcessor(void*arg,constchar*message);
5352

54-
/* close all connections and exit */
5553
staticvoid
56-
exit_nicely(void)
54+
disconnect_atexit(void)
5755
{
5856
inti;
5957

6058
for (i=0;i<nconns;i++)
61-
PQfinish(conns[i]);
62-
exit(1);
59+
if(conns[i])
60+
PQfinish(conns[i]);
6361
}
6462

6563
int
@@ -140,7 +138,7 @@ main(int argc, char **argv)
140138
{
141139
fprintf(stderr,"duplicate step name: %s\n",
142140
testspec->allsteps[i]->name);
143-
exit_nicely();
141+
exit(1);
144142
}
145143
}
146144

@@ -162,6 +160,7 @@ main(int argc, char **argv)
162160
*/
163161
nconns=1+testspec->nsessions;
164162
conns=calloc(nconns,sizeof(PGconn*));
163+
atexit(disconnect_atexit);
165164
backend_pids=calloc(nconns,sizeof(*backend_pids));
166165
for (i=0;i<nconns;i++)
167166
{
@@ -170,7 +169,7 @@ main(int argc, char **argv)
170169
{
171170
fprintf(stderr,"Connection %d to database failed: %s",
172171
i,PQerrorMessage(conns[i]));
173-
exit_nicely();
172+
exit(1);
174173
}
175174

176175
/*
@@ -196,7 +195,7 @@ main(int argc, char **argv)
196195
if (PQresultStatus(res)!=PGRES_COMMAND_OK)
197196
{
198197
fprintf(stderr,"message level setup failed: %s",PQerrorMessage(conns[i]));
199-
exit_nicely();
198+
exit(1);
200199
}
201200
PQclear(res);
202201

@@ -210,14 +209,14 @@ main(int argc, char **argv)
210209
{
211210
fprintf(stderr,"backend pid query returned %d rows and %d columns, expected 1 row and 1 column",
212211
PQntuples(res),PQnfields(res));
213-
exit_nicely();
212+
exit(1);
214213
}
215214
}
216215
else
217216
{
218217
fprintf(stderr,"backend pid query failed: %s",
219218
PQerrorMessage(conns[i]));
220-
exit_nicely();
219+
exit(1);
221220
}
222221
PQclear(res);
223222
}
@@ -254,7 +253,7 @@ main(int argc, char **argv)
254253
{
255254
fprintf(stderr,"prepare of lock wait query failed: %s",
256255
PQerrorMessage(conns[0]));
257-
exit_nicely();
256+
exit(1);
258257
}
259258
PQclear(res);
260259
termPQExpBuffer(&wait_query);
@@ -265,9 +264,6 @@ main(int argc, char **argv)
265264
*/
266265
run_testspec(testspec);
267266

268-
/* Clean up and exit */
269-
for (i=0;i<nconns;i++)
270-
PQfinish(conns[i]);
271267
return0;
272268
}
273269

@@ -375,7 +371,7 @@ run_named_permutations(TestSpec *testspec)
375371
{
376372
fprintf(stderr,"undefined step \"%s\" specified in permutation\n",
377373
p->stepnames[j]);
378-
exit_nicely();
374+
exit(1);
379375
}
380376
steps[j]=*this;
381377
}
@@ -510,7 +506,7 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
510506
elseif (PQresultStatus(res)!=PGRES_COMMAND_OK)
511507
{
512508
fprintf(stderr,"setup failed: %s",PQerrorMessage(conns[0]));
513-
exit_nicely();
509+
exit(1);
514510
}
515511
PQclear(res);
516512
}
@@ -530,7 +526,7 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
530526
fprintf(stderr,"setup of session %s failed: %s",
531527
testspec->sessions[i]->name,
532528
PQerrorMessage(conns[i+1]));
533-
exit_nicely();
529+
exit(1);
534530
}
535531
PQclear(res);
536532
}
@@ -612,7 +608,7 @@ run_permutation(TestSpec *testspec, int nsteps, Step **steps)
612608
{
613609
fprintf(stdout,"failed to send query for step %s: %s\n",
614610
step->name,PQerrorMessage(conn));
615-
exit_nicely();
611+
exit(1);
616612
}
617613

618614
/* Try to complete this step without blocking. */
@@ -723,7 +719,7 @@ try_complete_step(Step *step, int flags)
723719
if (sock<0)
724720
{
725721
fprintf(stderr,"invalid socket: %s",PQerrorMessage(conn));
726-
exit_nicely();
722+
exit(1);
727723
}
728724

729725
gettimeofday(&start_time,NULL);
@@ -741,7 +737,7 @@ try_complete_step(Step *step, int flags)
741737
if (errno==EINTR)
742738
continue;
743739
fprintf(stderr,"select failed: %s\n",strerror(errno));
744-
exit_nicely();
740+
exit(1);
745741
}
746742
elseif (ret==0)/* select() timeout: check for lock wait */
747743
{
@@ -761,7 +757,7 @@ try_complete_step(Step *step, int flags)
761757
{
762758
fprintf(stderr,"lock wait query failed: %s",
763759
PQerrorMessage(conns[0]));
764-
exit_nicely();
760+
exit(1);
765761
}
766762
waiting= ((PQgetvalue(res,0,0))[0]=='t');
767763
PQclear(res);
@@ -818,14 +814,14 @@ try_complete_step(Step *step, int flags)
818814
{
819815
fprintf(stderr,"step %s timed out after 200 seconds\n",
820816
step->name);
821-
exit_nicely();
817+
exit(1);
822818
}
823819
}
824820
elseif (!PQconsumeInput(conn))/* select(): data available */
825821
{
826822
fprintf(stderr,"PQconsumeInput failed: %s\n",
827823
PQerrorMessage(conn));
828-
exit_nicely();
824+
exit(1);
829825
}
830826
}
831827

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp