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

Commit5b5455b

Browse files
committed
isolationtester: append session name to application_name.
When writing / debugging an isolation test it sometimes is useful to see whichsession holds what lock etc. To make it easier, both as part of spec files andinteractively, append the session name to application_name. Sinceb1907d6application_name already contains the test name, this appends the session'sname to that.insert-conflict-specconflict did something like this manually, which can nowbe removed.As we have done lately with other test infrastructure improvements, backpatchthis change, to make it easier to backpatch tests.Author: Andres Freund <andres@anarazel.de>Reviewed-By: Michael Paquier <michael@paquier.xyz>Reviewed-By: Andrew Dunstan <andrew@dunslane.net>Discussion:https://postgr.es/m/20211211012052.2blmzcmxnxqawd2z@alap3.anarazel.deBackpatch: 10-, to make backpatching of tests easier.
1 parent7615edd commit5b5455b

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

‎src/test/isolation/expected/insert-conflict-specconflict.out

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -490,15 +490,15 @@ step controller_print_speculative_locks:
490490
WHERE
491491
locktype IN ('spectoken', 'transactionid')
492492
AND pa.datname = current_database()
493-
AND pa.application_name LIKE 'isolation/insert-conflict-specconflict-s%'
493+
AND pa.application_name LIKE 'isolation/insert-conflict-specconflict/s%'
494494
ORDER BY 1, 2, 3, 4;
495495

496496
application_name |locktype |mode |granted
497497
-----------------------------------------+-------------+-------------+-------
498-
isolation/insert-conflict-specconflict-s1|spectoken |ShareLock |f
499-
isolation/insert-conflict-specconflict-s1|transactionid|ExclusiveLock|t
500-
isolation/insert-conflict-specconflict-s2|spectoken |ExclusiveLock|t
501-
isolation/insert-conflict-specconflict-s2|transactionid|ExclusiveLock|t
498+
isolation/insert-conflict-specconflict/s1|spectoken |ShareLock |f
499+
isolation/insert-conflict-specconflict/s1|transactionid|ExclusiveLock|t
500+
isolation/insert-conflict-specconflict/s2|spectoken |ExclusiveLock|t
501+
isolation/insert-conflict-specconflict/s2|transactionid|ExclusiveLock|t
502502
(4 rows)
503503

504504
step controller_unlock_2_4: SELECT pg_advisory_unlock(2, 4);
@@ -517,14 +517,14 @@ step controller_print_speculative_locks:
517517
WHERE
518518
locktype IN ('spectoken', 'transactionid')
519519
AND pa.datname = current_database()
520-
AND pa.application_name LIKE 'isolation/insert-conflict-specconflict-s%'
520+
AND pa.application_name LIKE 'isolation/insert-conflict-specconflict/s%'
521521
ORDER BY 1, 2, 3, 4;
522522

523523
application_name |locktype |mode |granted
524524
-----------------------------------------+-------------+-------------+-------
525-
isolation/insert-conflict-specconflict-s1|transactionid|ExclusiveLock|t
526-
isolation/insert-conflict-specconflict-s1|transactionid|ShareLock |f
527-
isolation/insert-conflict-specconflict-s2|transactionid|ExclusiveLock|t
525+
isolation/insert-conflict-specconflict/s1|transactionid|ExclusiveLock|t
526+
isolation/insert-conflict-specconflict/s1|transactionid|ShareLock |f
527+
isolation/insert-conflict-specconflict/s2|transactionid|ExclusiveLock|t
528528
(3 rows)
529529

530530
step s2_commit: COMMIT;
@@ -544,7 +544,7 @@ step controller_print_speculative_locks:
544544
WHERE
545545
locktype IN ('spectoken', 'transactionid')
546546
AND pa.datname = current_database()
547-
AND pa.application_name LIKE 'isolation/insert-conflict-specconflict-s%'
547+
AND pa.application_name LIKE 'isolation/insert-conflict-specconflict/s%'
548548
ORDER BY 1, 2, 3, 4;
549549

550550
application_name|locktype|mode|granted

‎src/test/isolation/isolationtester.c

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,10 +154,14 @@ main(int argc, char **argv)
154154

155155
for (i=0;i<nconns;i++)
156156
{
157+
constchar*sessionname;
158+
157159
if (i==0)
158-
conns[i].sessionname="control connection";
160+
sessionname="control connection";
159161
else
160-
conns[i].sessionname=testspec->sessions[i-1]->name;
162+
sessionname=testspec->sessions[i-1]->name;
163+
164+
conns[i].sessionname=sessionname;
161165

162166
conns[i].conn=PQconnectdb(conninfo);
163167
if (PQstatus(conns[i].conn)!=CONNECTION_OK)
@@ -182,6 +186,26 @@ main(int argc, char **argv)
182186
blackholeNoticeProcessor,
183187
NULL);
184188

189+
/*
190+
* Similarly, append the session name to application_name to make it
191+
* easier to map spec file sessions to log output and
192+
* pg_stat_activity. The reason to append instead of just setting the
193+
* name is that we don't know the name of the test currently running.
194+
*/
195+
res=PQexecParams(conns[i].conn,
196+
"SELECT set_config('application_name',\n"
197+
" current_setting('application_name') || '/' || $1,\n"
198+
" false)",
199+
1,NULL,
200+
&sessionname,
201+
NULL,NULL,0);
202+
if (PQresultStatus(res)!=PGRES_TUPLES_OK)
203+
{
204+
fprintf(stderr,"setting of application name failed: %s",
205+
PQerrorMessage(conns[i].conn));
206+
exit(1);
207+
}
208+
185209
/* Save each connection's backend PID for subsequent use. */
186210
conns[i].backend_pid=PQbackendPID(conns[i].conn);
187211
conns[i].backend_pid_str=psprintf("%d",conns[i].backend_pid);

‎src/test/isolation/specs/insert-conflict-specconflict.spec

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ session controller
4747
setup
4848
{
4949
SETdefault_transaction_isolation='read committed';
50-
SETapplication_name='isolation/insert-conflict-specconflict-controller';
5150
}
5251
stepcontroller_locks{SELECTpg_advisory_lock(sess,lock),sess,lockFROMgenerate_series(1,2)a(sess),generate_series(1,3)b(lock);}
5352
stepcontroller_unlock_1_1{SELECTpg_advisory_unlock(1,1);}
@@ -66,7 +65,7 @@ step controller_print_speculative_locks {
6665
WHERE
6766
locktypeIN('spectoken','transactionid')
6867
ANDpa.datname=current_database()
69-
ANDpa.application_nameLIKE'isolation/insert-conflict-specconflict-s%'
68+
ANDpa.application_nameLIKE'isolation/insert-conflict-specconflict/s%'
7069
ORDERBY1,2,3,4;
7170
}
7271

@@ -75,7 +74,6 @@ setup
7574
{
7675
SETdefault_transaction_isolation='read committed';
7776
SETspec.session=1;
78-
SETapplication_name='isolation/insert-conflict-specconflict-s1';
7977
}
8078
steps1_begin{ BEGIN;}
8179
steps1_create_non_unique_index{CREATEINDEXupserttest_key_idxONupserttest((blurt_and_lock_4(key)));}
@@ -90,7 +88,6 @@ setup
9088
{
9189
SETdefault_transaction_isolation='read committed';
9290
SETspec.session=2;
93-
SETapplication_name='isolation/insert-conflict-specconflict-s2';
9491
}
9592
steps2_begin{ BEGIN;}
9693
steps2_upsert{INSERTINTOupserttest(key,data)VALUES('k1','inserted s2')ONCONFLICT(blurt_and_lock_123(key))DOUPDATESETdata=upserttest.data ||' with conflict update s2';}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp