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

Commit2662ef9

Browse files
committed
snapshot stability test
1 parenteeba549 commit2662ef9

File tree

3 files changed

+54
-10
lines changed

3 files changed

+54
-10
lines changed

‎contrib/postgres_fdw/t/001_bank_check.pl

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
use PostgresNode;
55
use TestLib;
6-
use Test::Moretests=>2;
6+
use Test::Moretests=>3;
77

88
my$master = get_new_node("master");
99
$master->init;
@@ -56,9 +56,6 @@
5656

5757
$master->pgbench(-n,-c=> 20,-t=> 30,-f=>"$TestLib::log_path/../../t/bank.sql",'postgres' );
5858

59-
# diag( $master->connstr() );
60-
# sleep(3600);
61-
6259
###############################################################################
6360
# Helpers
6461
###############################################################################
@@ -162,10 +159,59 @@ sub count_and_delete_rows
162159
is($isolation_errors, 0,'isolation between concurrent global and local transactions');
163160

164161

165-
# diag( $master->connstr('postgres'), "\n" );
166-
# diag( $shard1->connstr('postgres'), "\n" );
167-
# diag( $shard2->connstr('postgres'), "\n" );
168-
# sleep(3600);
162+
###############################################################################
163+
# Snapshot stability
164+
###############################################################################
165+
166+
my ($hashes,$hash1,$hash2);
167+
my$stability_errors = 0;
168+
my$stable;
169+
170+
# global txses
171+
$pgb_handle1 =$master->pgbench_async(-n,-c=> 5,-T=>$seconds,-f=>"$TestLib::log_path/../../t/bank.sql",'postgres' );
172+
# concurrent local
173+
$pgb_handle2 =$shard1->pgbench_async(-n,-c=> 5,-T=>$seconds,-f=>"$TestLib::log_path/../../t/bank1.sql",'postgres' );
174+
$pgb_handle3 =$shard2->pgbench_async(-n,-c=> 5,-T=>$seconds,-f=>"$TestLib::log_path/../../t/bank2.sql",'postgres' );
175+
176+
$selects = 0;
177+
$started =time();
178+
while (time() -$started <$seconds)
179+
{
180+
foreachmy$node ($master,$shard1,$shard2)
181+
{
182+
($hash1,$_,$hash2) =split"\n",$node->safe_psql('postgres',qq[
183+
begin isolation level repeatable read;
184+
select md5(array_agg((t.*)::text)::text) from (select * from accounts order by id) as t;
185+
select pg_sleep(1);
186+
select md5(array_agg((t.*)::text)::text) from (select * from accounts order by id) as t;
187+
commit;
188+
]);
189+
190+
if ($hash1ne$hash2)
191+
{
192+
$stability_errors++;
193+
}
194+
elsif ($hash1eq''or$hash2eq'')
195+
{
196+
die;
197+
}
198+
else
199+
{
200+
$selects++;
201+
}
202+
}
203+
}
204+
205+
$master->pgbench_await($pgb_handle1);
206+
$shard1->pgbench_await($pgb_handle2);
207+
$shard2->pgbench_await($pgb_handle3);
208+
209+
die""unless ($selects > 0 &&
210+
count_and_delete_rows($master,'global_transactions') > 0 &&
211+
count_and_delete_rows($shard1,'local_transactions') > 0 &&
212+
count_and_delete_rows($shard2,'local_transactions') > 0);
213+
214+
is($stability_errors, 0,'snapshot is stable during concurrent global and local transactions');
169215

170216
$master->stop;
171217
$shard1->stop;

‎contrib/postgres_fdw/t/bank1.sql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@ BEGIN;
44
WITH updAS (UPDATE accountsSET amount= amount-1WHERE id= (2*:id+1) RETURNING*)
55
INSERT into local_transactionsSELECT now()FROM upd;
66
UPDATE accountsSET amount= amount+1WHERE id= (2*:id+3);
7-
-- INSERT into local_transactions values(now());
87
COMMIT;

‎contrib/postgres_fdw/t/bank2.sql

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@ BEGIN;
44
WITH updAS (UPDATE accountsSET amount= amount-1WHERE id=2*:id RETURNING*)
55
INSERT into local_transactionsSELECT now()FROM upd;
66
UPDATE accountsSET amount= amount+1WHERE id= (2*:id+2);
7-
-- INSERT into local_transactions values(now());
87
COMMIT;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp